@clickup/rest-client
Version:
A syntax sugar tool around Node fetch() API, tailored to work with TypeScript and response validators
37 lines • 1.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const MIN_LOG_DELAY_MS = 10;
/**
* Rest Client middleware that adds some delay between requests using one of
* Pacer implementations.
*/
function paceRequests(pacer, delayMetric) {
return async (req, next) => {
if (typeof pacer === "function") {
pacer = await pacer(req);
}
if (pacer) {
const { delayMs, reason } = await pacer.pace();
if (delayMs > 0) {
delayMetric === null || delayMetric === void 0 ? void 0 : delayMetric(delayMs, reason);
await req.options.heartbeater.delay(delayMs);
}
if (delayMs > MIN_LOG_DELAY_MS) {
req.options.logger({
attempt: 0,
req,
res: "backoff_delay",
exception: null,
timestamp: Date.now(),
elapsed: delayMs,
isFinalAttempt: true,
privateDataInResponse: false,
comment: reason,
});
}
}
return next(req);
};
}
exports.default = paceRequests;
//# sourceMappingURL=paceRequests.js.map
;