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
↓ peach-browser-528a8072.tar.gzatlas at this save
files changed1 file
src/background/passkey.ts+15 −0src/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;