UNPKG

@clickup/rest-client

Version:

A syntax sugar tool around Node fetch() API, tailored to work with TypeScript and response validators

44 lines 1.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const RestContentSizeOverLimitError_1 = __importDefault(require("../errors/RestContentSizeOverLimitError")); const RestRateLimitError_1 = __importDefault(require("../errors/RestRateLimitError")); const RestRetriableError_1 = __importDefault(require("../errors/RestRetriableError")); const RestTokenInvalidError_1 = __importDefault(require("../errors/RestTokenInvalidError")); /** * Returns a new retry delay of the error needs to be retried, otherwise * "no_retry". */ function calcRetryDelay(error, options, res, retryDelayMs) { if (error instanceof RestRateLimitError_1.default || error instanceof RestRetriableError_1.default) { // We've already made a decision to retry this error. return Math.min(options.retryDelayMaxMs, Math.max(retryDelayMs, error.delayMs)); } switch (options.isRetriableError(res, error)) { case "RETRY": default: break; // number returned case "BEST_EFFORT": if (error instanceof RestTokenInvalidError_1.default) { return "no_retry"; } if (!(error instanceof RestRateLimitError_1.default) && res.status >= 400 && res.status <= 499) { return "no_retry"; } if (error instanceof RestContentSizeOverLimitError_1.default) { // Content size ... over limit. return "no_retry"; } break; case "NEVER_RETRY": return "no_retry"; } return retryDelayMs; } exports.default = calcRetryDelay; //# sourceMappingURL=calcRetryDelay.js.map