async def do_async(self, task: Task, model: ModelNames | None = None, client: Any = None, debug: bool = False, retry: int | None = None):
        """
        Execute a direct LLM call using instance defaults or overrides asynchronously.
        
        Args:
            task: The task to execute
            model: The LLM model to use (overrides instance default if provided)
            client: Optional custom client (overrides instance default if provided)
            debug: Whether to enable debug mode (overrides instance default if provided)
            retry: Number of retries for failed calls (overrides instance default if provided)
            
        Returns:
            The response from the LLM
        """
        # Use provided parameters or instance defaults
        actual_model = model if model is not None else self.model
        actual_client = client if client is not None else self.client
        actual_debug = debug if debug is not False else self.debug
        actual_retry = retry if retry is not None else self.retry
        
        # Call the static method with the resolved parameters
        result = await DirectStatic.do_async(task, actual_model, actual_client, actual_debug, actual_retry)
        
        # No need to print price_id summary here since DirectStatic.do_async already does it
        return result

        Execute a direct LLM call using instance defaults or overrides asynchronously.
        
        Args:
            task: The task to execute
            model: The LLM model to use (overrides instance default if provided)
            client: Optional custom client (overrides instance default if provided)
            debug: Whether to enable debug mode (overrides instance default if provided)
            retry: Number of retries for failed calls (overrides instance default if provided)
            
        Returns:
            The response from the LLM
        
src/upsonic/client/direct_llm_call/direct_llm_cal.py