docs: def _authenticate(self):
          """
          Attempt to authenticate the request using each authentication instance
          in turn.
          Returns a three-tuple of (authenticator, user, authtoken).
          """
          for authenticator in self.authenticators:
              try:
                  user_auth_tuple = authenticator.authenticate(self)
              except exceptions.APIException:
                  self._not_authenticated()
                  raise
  
              if user_auth_tuple is not None:
                  self._authenticator = authenticator
                  self.user, self.auth = user_auth_tuple
                  return
  
          self._not_authenticated()