528a807295c0

swallow Chrome Missing GetResponseDetails.responseJson error in GET pass-through paths

time
2026-05-31 00:33 UTC · 4 months ago
machine
koh2
agent
claude-sonnet-4-6
session
pass-through responseJson fix
parent
3aafd13289fb
1 file src/background/passkey.ts+15 −0
src/background/passkey.ts+15 −0
@@ -192,6 +192,19 @@192192   return err instanceof Error && /invalid requestid/i.test(err.message);193193 }194194 195+/**196+ * Chrome throws "Missing GetResponseDetails.responseJson" when197+ * completeGetRequest is called with no responseJson and no error (the198+ * pass-through signal). The throw is a Chrome API quirk — the request IS199+ * routed to the platform authenticator — but if we let it propagate, the200+ * outer catch calls rejectGet, which sends a second completeGetRequest with201+ * an error that cancels the pass-through and shows "Something went wrong" on202+ * the page. Swallow it exactly as we swallow "Invalid requestId".203+ */204+function isMissingResponseJsonError(err: unknown): boolean {205+  return err instanceof Error && /missing getresponsedetails/i.test(err.message);206+}207+195208 async function rejectCreate(196209   requestId: number,197210   name: string,@@ -686,6 +699,7 @@686699       await chrome.webAuthenticationProxy.completeGetRequest({ requestId: request.requestId });687700     } catch (err) {688701       if (isInvalidRequestIdError(err)) return;702+      if (isMissingResponseJsonError(err)) return;689703       throw err;690704     }691705     return;@@ -701,6 +715,7 @@701715       await chrome.webAuthenticationProxy.completeGetRequest({ requestId: request.requestId });702716     } catch (err) {703717       if (isInvalidRequestIdError(err)) return;718+      if (isMissingResponseJsonError(err)) return;704719       throw err;705720     }706721     return;

view file