          """
          If request is not permitted, determine what kind of exception to raise.
          """
          raise exceptions.PermissionDenied()
  
      def throttled(self, request, wait):
          """
          If request is throttled, determine what kind of exception to raise.
          """
 
</s> remove         Attempt to authenticate the request using each authentication instance in turn.
        Returns a two-tuple of (user, authtoken).
 </s> add         Attempt to authenticate the request using each authentication instance
        in turn.
        Returns a three-tuple of (authenticator, user, authtoken). </s> remove             self._user, self._auth = self._authenticate()
 </s> add             self._authenticator, self._user, self._auth = self._authenticate() </s> remove             self._user, self._auth = self._authenticate()
 </s> add             self._authenticator, self._user, self._auth = self._authenticate()
        if self.request.successful_authenticator:
            raise exceptions.NotAuthenticated()
          """
          If request is not permitted, determine what kind of exception to raise.
          """
        if self.request.successful_authenticator:
            raise exceptions.NotAuthenticated()
          raise exceptions.PermissionDenied()
  
      def throttled(self, request, wait):
          """
          If request is throttled, determine what kind of exception to raise.
          """
keep keep add keep keep keep keep keep keep
 Implementing 401 vs 403 responses 
rest_framework/views.py