Because:
* A failed /v1/oauth/client/:id fetch silently builds a ghost OAuth
integration: scope sanitisation strips every scope and the flow
throws errno 109, masking the real cause across ~80k Sentry events
(FXA-CONTENT-1HYP, 1GTG, related).
* Regression from FXA-12995: the REST replacement for Apollo's
useQuery dropped the error signal that useIntegration relied on.
This commit:
* Adds clientInfoLoadFailed on GenericIntegration, set when client_id
was present but clientInfo is undefined.
* Short-circuits OAuthWebIntegration.getPermissions to throw
SERVICE_UNAVAILABLE (errno 998) when the flag is set; existing
OAuthDataError handling keeps user-facing behaviour unchanged.
* Captures the fetch error from useClientInfoState under
area: 'useClientInfoState.fetch'.
* Adds unit coverage for the flag, the early-return, and the Sentry
capture.
Closes #FXA-13618