def download_application(self, check_for_application_convergence: bool = False) -> str:
        """
        Args:
            check_for_application_convergence: check for the application to converge before downloading.

        Download the Vespa application. If wait_for_application_convergence is True, this method will wait for the
        application to converge before downloading.

        Application download happens in two steps:
        1. Create a session
        2. Download the application using the session ID

        The session created in step 1 is local to the config node that created it and subsequent requests will return a
        404 error if the request is routed to a different config node. This method attempts to ensure the same config
        node is used for all requests by using the same httpx client for all requests. However, this is not guaranteed.

        The likelihood of getting a 404 error is further reduced if config cluster uses a load balancer with sticky
        sessions. Since we are using a single httpx client, cookie-based sticky sessions will work with this
        implementation.

        Returns:
            Path to the downloaded application
        """
        if check_for_application_convergence:
            self.check_for_application_convergence()

        with httpx.Client() as httpx_client:
            session_id = self._create_deploy_session(httpx_client)['session-id']
            return self._download_application(session_id, httpx_client)

        Args:
            check_for_application_convergence: check for the application to converge before downloading.

        Download the Vespa application. If wait_for_application_convergence is True, this method will wait for the
        application to converge before downloading.

        Application download happens in two steps:
        1. Create a session
        2. Download the application using the session ID

        The session created in step 1 is local to the config node that created it and subsequent requests will return a
        404 error if the request is routed to a different config node. This method attempts to ensure the same config
        node is used for all requests by using the same httpx client for all requests. However, this is not guaranteed.

        The likelihood of getting a 404 error is further reduced if config cluster uses a load balancer with sticky
        sessions. Since we are using a single httpx client, cookie-based sticky sessions will work with this
        implementation.

        Returns:
            Path to the downloaded application
        
src/marqo/vespa/vespa_client.py