docs: def request(self, method, url, proxies=None, **kwargs):
          """
          :raises ProxyConfigExhaustedError: If the PAC file provided no usable proxy configuration.
          :raises MalformedPacError: If something that claims to be a PAC file was downloaded but could not be parsed.
          """
          if not self._tried_get_pac:
              self.get_pac()
  
          # Whether we obtained or are trying to obtain a proxy from the PAC.
          # PAC is not in use if this request has proxies provided as a parameter, or if the session has disabled PAC.
          using_pac = proxies is None and self._proxy_resolver and self.pac_enabled
  
          if using_pac:
              proxies = self._proxy_resolver.get_proxy_for_requests(url)
  
          while True:
              proxy_url = list(proxies.values())[0] if proxies else None
              try:
                  response = super(PACSession, self).request(method, url, proxies=proxies, **kwargs)
              except Exception as request_exc:
                  # Use PAC's proxy failover rules if the proxy used for the request is from the PAC,
                  # and this exception represents a proxy failure.
                  if using_pac and proxy_url and self._exc_proxy_failure_filter(request_exc):
                      try:
                          proxies = self.do_proxy_failover(proxy_url, url)
                          continue
                      except ProxyConfigExhaustedError:
                          # No failover option, not even DIRECT. Bubble up original exception.
                          self._proxy_resolver.unban_all()
                  raise request_exc  # In PY2, just saying 'raise' may re-raise ProxyConfigExhaustedError.
  
              # Use PAC's proxy failover rules if the proxy used for the request is from the PAC,
              # and this response represents a proxy failure.
              if using_pac and proxy_url and self._response_proxy_failure_filter(response):
                  try:
                      proxies = self.do_proxy_failover(proxy_url, url)
                      continue
                  except ProxyConfigExhaustedError:
                      # No failover option, not even DIRECT. Return response as-is.
                      self._proxy_resolver.unban_all()
                      return response
  
              return response