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) <noreply@anthropic.com>
This commit is contained in:
@@ -23,9 +23,14 @@ export function createSharePointClient(context: WebPartContext): IHttpClient {
|
|||||||
export function createAadClient(context: WebPartContext, resource: string): IHttpClient {
|
export function createAadClient(context: WebPartContext, resource: string): IHttpClient {
|
||||||
let clientPromise: Promise<AadHttpClient> | undefined;
|
let clientPromise: Promise<AadHttpClient> | undefined;
|
||||||
|
|
||||||
|
// Неудачную попытку не запоминаем: иначе одна сетевая осечка при получении токена
|
||||||
|
// ломала бы все запросы к этому ресурсу до перезагрузки страницы.
|
||||||
const getClient = (): Promise<AadHttpClient> => {
|
const getClient = (): Promise<AadHttpClient> => {
|
||||||
if (!clientPromise) {
|
if (!clientPromise) {
|
||||||
clientPromise = context.aadHttpClientFactory.getClient(resource);
|
clientPromise = context.aadHttpClientFactory.getClient(resource).catch((error: unknown) => {
|
||||||
|
clientPromise = undefined;
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return clientPromise;
|
return clientPromise;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user