From 92621516f8d15689d109f8ac127ecc8037583caf Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Tue, 11 Feb 2025 21:37:49 +0000 Subject: [PATCH] Re-auth upon 401 when POSTing --- src/client/sse.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/client/sse.ts b/src/client/sse.ts index 173da8ab..e8de3e38 100644 --- a/src/client/sse.ts +++ b/src/client/sse.ts @@ -195,8 +195,17 @@ export class SSEClientTransport implements Transport { }; const response = await fetch(this._endpoint, init); - if (!response.ok) { + if (response.status === 401 && this._authProvider) { + const result = await auth(this._authProvider, { serverUrl: this._url }); + if (result !== "AUTHORIZED") { + throw new Error("Unauthorized"); + } + + // Purposely _not_ awaited, so we don't call onerror twice + return this.send(message); + } + const text = await response.text().catch(() => null); throw new Error( `Error POSTing to endpoint (HTTP ${response.status}): ${text}`,