async def _send_list_request_async(
        self, func: Callable[[_M], Awaitable[AsyncIterable[_R]]], request: _M
    ) -> list[_R]:
        """Sends a request by invoking an asyncio callable and collecting results.

        This is used for requests that return paged results. Inside the asyncio
        event loop, we iterate over all results and collect then into a list.
        """

        async def new_func(request: _M) -> list[_R]:
            pager = await func(request)
            return [item async for item in pager]

        return await self._run_retry_async(new_func, request)
Sends a request by invoking an asyncio callable and collecting results.

        This is used for requests that return paged results. Inside the asyncio
        event loop, we iterate over all results and collect then into a list.
        
cirq-google/cirq_google/engine/engine_client.py