code: def request(self, method, path, **options):
          
          options = self._merge_options(options)
          url = options['base_url'] + path
          retry_count = 0
          request_options = self._parse_request_options(options)
          self._add_version_header(request_options)
          while True:
              try:
                  response = getattr(self.session, method)(
                      url, auth=self.auth, **request_options)
                  if response.status_code in STATUS_MAP:
                      raise STATUS_MAP[response.status_code](response)
                  elif 500 <= response.status_code < 600:
                      # Any unhandled 500 is a server error.
                      raise error.ServerError(response)
                  else:
                      if options['full_payload']:
                          return response.json()
                      else:
                          return response.json()['data']
              except error.RetryableAsanaError as e:
                  if retry_count < options['max_retries']:
                      self._handle_retryable_error(e, retry_count)
                      retry_count += 1
                  else:
                      raise e
docs: Dispatches a request to the Asana HTTP API