code: def request(self, method, url, params=None, data=None, headers=None, auth=None, timeout=None,
                  allow_redirects=False):
          
          session = self.session or Session()
          request = Request(method.upper(), url, params=params, data=data, headers=headers, auth=auth)
          prepared_request = session.prepare_request(request)
  
          if 'Host' not in prepared_request.headers and 'host' not in prepared_request.headers:
              prepared_request.headers['Host'] = self._get_host(prepared_request)
  
          validation_payload = self._build_validation_payload(prepared_request)
          jwt = ClientValidationJwt(self.account_sid, self.api_key_sid, self.credential_sid,
                                    self.private_key, validation_payload)
          prepared_request.headers['Twilio-Client-Validation'] = jwt.to_jwt()
  
          response = session.send(
              prepared_request,
              allow_redirects=allow_redirects,
              timeout=timeout,
          )
  
          return Response(int(response.status_code), response.text)
docs: Make a signed HTTP Request
  
          :param str method: The HTTP method to use
          :param str url: The URL to request
          :param dict params: Query parameters to append to the URL
          :param dict data: Parameters to go in the body of the HTTP request
          :param dict headers: HTTP Headers to send with the request
          :param tuple auth: Basic Auth arguments
          :param float timeout: Socket/Read timeout for the request
          :param boolean allow_redirects: Whether or not to allow redirects
          See the requests documentation for explanation of all these parameters
  
          :return: An http response
          :rtype: A :class:`Response <twilio.rest.http.response.Response>` object