code: def do_request_async(self, url, method='GET', headers=None, payload=None,
                         deadline=None, callback=None):
      
      retry_wrapper = api_utils._RetryWrapper(
          self.retry_params,
          retriable_exceptions=api_utils._RETRIABLE_EXCEPTIONS,
          should_retry=api_utils._should_retry)
      resp = yield retry_wrapper.run(
          self.urlfetch_async,
          url=url,
          method=method,
          headers=headers,
          payload=payload,
          deadline=deadline,
          callback=callback,
          follow_redirects=False)
      raise ndb.Return((resp.status_code, resp.headers, resp.content))
docs: Issue one HTTP request.
  
      It performs async retries using tasklets.
  
      Args:
        url: the url to fetch.
        method: the method in which to fetch.
        headers: the http headers.
        payload: the data to submit in the fetch.
        deadline: the deadline in which to make the call.
        callback: the call to make once completed.
  
      Yields:
        The async fetch of the url.