undici-retry
Version:
Library for handling retry logic with undici HTTP client
37 lines • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveDelayTime = resolveDelayTime;
const DIGITS_ONLY_REGEX = /^\d+$/;
function resolveDelayTime(headers, maxDelay = 60000) {
const retryAfter = headers['retry-after'];
if (!retryAfter) {
return {
error: 'header_not_set',
};
}
let resolvedDelay;
// parse as number
if (retryAfter.match(DIGITS_ONLY_REGEX)) {
resolvedDelay = Number.parseInt(retryAfter) * 1000;
}
// parse as date
else {
const date = new Date(retryAfter);
if (!isNaN(date.getTime())) {
resolvedDelay = date.getTime() - Date.now();
}
}
if (resolvedDelay) {
return resolvedDelay <= maxDelay
? {
result: resolvedDelay,
}
: {
error: 'max_delay_exceeded',
};
}
return {
error: 'unknown_format',
};
}
//# sourceMappingURL=retryAfterResolver.js.map