UNPKG

@azure/msal-node

Version:
50 lines (47 loc) 2.33 kB
/*! @azure/msal-node v5.0.3 2026-01-28 */ 'use strict'; import { Constants } from '@azure/msal-common/node'; import { LinearRetryStrategy } from './LinearRetryStrategy.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ const DEFAULT_MANAGED_IDENTITY_MAX_RETRIES = 3; // referenced in unit test const DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS = 1000; const DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON = [ Constants.HTTP_NOT_FOUND, Constants.HTTP_REQUEST_TIMEOUT, Constants.HTTP_TOO_MANY_REQUESTS, Constants.HTTP_SERVER_ERROR, Constants.HTTP_SERVICE_UNAVAILABLE, Constants.HTTP_GATEWAY_TIMEOUT, ]; class DefaultManagedIdentityRetryPolicy { constructor() { this.linearRetryStrategy = new LinearRetryStrategy(); } /* * this is defined here as a static variable despite being defined as a constant outside of the * class because it needs to be overridden in the unit tests so that the unit tests run faster */ static get DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS() { return DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS; } async pauseForRetry(httpStatusCode, currentRetry, logger, retryAfterHeader) { if (DEFAULT_MANAGED_IDENTITY_HTTP_STATUS_CODES_TO_RETRY_ON.includes(httpStatusCode) && currentRetry < DEFAULT_MANAGED_IDENTITY_MAX_RETRIES) { const retryAfterDelay = this.linearRetryStrategy.calculateDelay(retryAfterHeader, DefaultManagedIdentityRetryPolicy.DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS); logger.verbose(`Retrying request in ${retryAfterDelay}ms (retry attempt: ${currentRetry + 1})`, ""); // pause execution for the calculated delay await new Promise((resolve) => { // retryAfterHeader value of 0 evaluates to false, and DEFAULT_MANAGED_IDENTITY_RETRY_DELAY_MS will be used return setTimeout(resolve, retryAfterDelay); }); return true; } // if the status code is not retriable or max retries have been reached, do not retry return false; } } export { DEFAULT_MANAGED_IDENTITY_MAX_RETRIES, DefaultManagedIdentityRetryPolicy }; //# sourceMappingURL=DefaultManagedIdentityRetryPolicy.mjs.map