Skip to content

feat: add onAuthError option for credential-expiry detection#75

Open
kcheng486 wants to merge 1 commit into
carbonplan:mainfrom
kcheng486:feat/on-auth-error
Open

feat: add onAuthError option for credential-expiry detection#75
kcheng486 wants to merge 1 commit into
carbonplan:mainfrom
kcheng486:feat/on-auth-error

Conversation

@kcheng486

Copy link
Copy Markdown

Surface signed-request failures (HTTP 400/401) through a new optional onAuthError(status) layer option so consumers can detect expired credentials and refresh them.

transformRequest is only used for signed/authenticated requests, so a 400 is due to expired credentials(not authorized -> 401, missing -> 404, denied -> 403). Because temporary credentials in particular return 400 (ExpiredToken/ InvalidToken), often with no readable body (HEAD probes / CORS-gated errors), we have to rely on the status code itself. On 400/401 the fetch store calls onAuthError(status) and remaps to 404 so the read is treated as a missing chunk instead of throwing. The existing 403->404 remap is left untouched (no onAuthError) so sparse pyramids that 403 absent chunks don't trigger spurious refreshes.

Surface signed-request failures (HTTP 400/401) through a new optional
onAuthError(status) layer option so consumers can detect expired
credentials and refresh them.

transformRequest is only used for signed/authenticated requests, so a
400 can be due to expired credentials(401 not authorized, missing -> 404, denied -> 403).
Because temporary credentials in particular return 400 (ExpiredToken/
InvalidToken), often with no readable body (HEAD probes / CORS-gated
errors), we have to rely on the status code itself. On 400/401 the
fetch store calls onAuthError(status) and remaps to 404 so the read is
treated as a missing chunk instead of throwing. The existing 403->404
remap is left untouched (no onAuthError) so sparse pyramids that 403
absent chunks don't trigger spurious refreshes.
@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

@kcheng486 is attempting to deploy a commit to the carbonplan Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant