From 3128190b5caced6c276250fd11fd7e767520232e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=93=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Mon, 19 Oct 2026 10:07:07 +0500 Subject: [PATCH] fix: retry AAD client creation after a failed token request The rejected promise was cached, so a single network hiccup while getting the Dataverse or API token broke every request to that resource until the page was reloaded. Seen once in T-OBJ-11. Co-Authored-By: Claude Opus 5.5 (1M context) --- src/webparts/stroyBot/services/http/spfxClients.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/webparts/stroyBot/services/http/spfxClients.ts b/src/webparts/stroyBot/services/http/spfxClients.ts index 18e3355..f2a6d7b 100644 --- a/src/webparts/stroyBot/services/http/spfxClients.ts +++ b/src/webparts/stroyBot/services/http/spfxClients.ts @@ -23,9 +23,14 @@ export function createSharePointClient(context: WebPartContext): IHttpClient { export function createAadClient(context: WebPartContext, resource: string): IHttpClient { let clientPromise: Promise | undefined; + // Неудачную попытку не запоминаем: иначе одна сетевая осечка при получении токена + // ломала бы все запросы к этому ресурсу до перезагрузки страницы. const getClient = (): Promise => { if (!clientPromise) { - clientPromise = context.aadHttpClientFactory.getClient(resource); + clientPromise = context.aadHttpClientFactory.getClient(resource).catch((error: unknown) => { + clientPromise = undefined; + throw error; + }); } return clientPromise; };