on Unauthorized
Invoked when a request that carried a Portal bearer token comes back 401, so a dead credential is dropped rather than replayed on the next call.
Carrying the bearer is the whole test, deliberately without a host check: Api sends the credential to whatever apiHost it was configured with, so a self-hosted Portal gateway under a custodian's own domain is a host the token really was handed to, and its 401 does mean the token is dead. A request the SDK did not authenticate is still excluded — Provider passes a null bearer for third-party RPC, so a dApp gateway rejecting one can never sign the user out.
Set by io.portalhq.android.Portal during construction to invalidate the credential it was built with. A single PortalRequests is shared across Api, the sub-APIs and Provider — that is intended, they all share one credential.
Observational only: the hook's own failure is swallowed, and the original io.portalhq.android.exceptions.PortalException.Api.HttpUnauthorized is always what the caller sees. Credential bookkeeping must never replace the failure that triggered it.