@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
JavaScript
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
;