async def async_send(self, request, headers=None, content=None, **config):
loop = asyncio.get_event_loop()<EOL>if self.config.keep_alive and self._session is None:<EOL><INDENT>self._session = requests.Session()<EOL><DEDENT>try:<EOL><INDENT>session = self.creds.signed_session(self._session)<EOL><DEDENT>except TypeError:  <EOL><INDENT>session = self.creds.signed_session()<EOL>if self._session is not None:<EOL><INDENT>_LOGGER.warning(<EOL>"<STR_LIT>")<EOL><DEDENT><DEDENT>kwargs = self._configure_session(session, **config)<EOL>if headers:<EOL><INDENT>request.headers.update(headers)<EOL><DEDENT>if not kwargs.get('<STR_LIT>'):<EOL><INDENT>request.add_content(content)<EOL><DEDENT>if request.data:<EOL><INDENT>kwargs['<STR_LIT:data>'] = request.data<EOL><DEDENT>kwargs['<STR_LIT>'].update(request.headers)<EOL>response = None<EOL>try:<EOL><INDENT>try:<EOL><INDENT>future = loop.run_in_executor(<EOL>None,<EOL>functools.partial(<EOL>session.request,<EOL>request.method,<EOL>request.url,<EOL>**kwargs<EOL>)<EOL>)<EOL>return await future<EOL><DEDENT>except (oauth2.rfc6749.errors.InvalidGrantError,<EOL>oauth2.rfc6749.errors.TokenExpiredError) as err:<EOL><INDENT>error = "<STR_LIT>"<EOL>_LOGGER.warning(error)<EOL><DEDENT>try:<EOL><INDENT>session = self.creds.refresh_session()<EOL>kwargs = self._configure_session(session)<EOL>if request.data:<EOL><INDENT>kwargs['<STR_LIT:data>'] = request.data<EOL><DEDENT>kwargs['<STR_LIT>'].update(request.headers)<EOL>future = loop.run_in_executor(<EOL>None,<EOL>functools.partial(<EOL>session.request,<EOL>request.method,<EOL>request.url,<EOL>**kwargs<EOL>)<EOL>)<EOL>return await future<EOL><DEDENT>except (oauth2.rfc6749.errors.InvalidGrantError,<EOL>oauth2.rfc6749.errors.TokenExpiredError) as err:<EOL><INDENT>msg = "<STR_LIT>"<EOL>raise_with_traceback(TokenExpiredError, msg, err)<EOL><DEDENT><DEDENT>except (requests.RequestException,<EOL>oauth2.rfc6749.errors.OAuth2Error) as err:<EOL><INDENT>msg = "<STR_LIT>"<EOL>raise_with_traceback(ClientRequestError, msg, err)<EOL><DEDENT>finally:<EOL><INDENT>self._close_local_session_if_necessary(response, session, kwargs['<STR_LIT>'])<EOL><DEDENT>
Prepare and send request object according to configuration.
        :param ClientRequest request: The request object to be sent.
        :param dict headers: Any headers to add to the request.
        :param content: Any body data to add to the request.
        :param config: Any specific config overrides