async def call_async(
        self,
        task: Union[Task, List[Task]],
        llm_model: str = None,
        retry: int = 3
    ) -> Any:
        """
        Asynchronous version of the call method.
        """
        start_time = time.time()

        try:
            if isinstance(task, list):
                for each in task:
                    the_result = await self.call_async_(each, llm_model, retry)
                    call_end(the_result["result"], the_result["llm_model"], the_result["response_format"], start_time, time.time(), the_result["usage"], the_result["tool_usage"], self.debug, each.price_id)
            else:
                the_result = await self.call_async_(task, llm_model, retry)
                call_end(the_result["result"], the_result["llm_model"], the_result["response_format"], start_time, time.time(), the_result["usage"], the_result["tool_usage"], self.debug, task.price_id)
        except Exception as outer_e:
            try:
                from ...server import stop_dev_server, stop_main_server, is_tools_server_running, is_main_server_running

                if is_tools_server_running() or is_main_server_running():
                    stop_dev_server()
            except Exception:
                pass
            raise outer_e

        end_time = time.time()

        return task.response

        Asynchronous version of the call method.
        
src/upsonic/client/level_one/call.py