Metzploreur/node_modules/@smithy/middleware-retry/dist-cjs/AdaptiveRetryStrategy.js

25 lines
1.1 KiB
JavaScript
Raw Normal View History

2023-11-01 16:33:25 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdaptiveRetryStrategy = void 0;
const util_retry_1 = require("@smithy/util-retry");
const StandardRetryStrategy_1 = require("./StandardRetryStrategy");
class AdaptiveRetryStrategy extends StandardRetryStrategy_1.StandardRetryStrategy {
constructor(maxAttemptsProvider, options) {
const { rateLimiter, ...superOptions } = options !== null && options !== void 0 ? options : {};
super(maxAttemptsProvider, superOptions);
this.rateLimiter = rateLimiter !== null && rateLimiter !== void 0 ? rateLimiter : new util_retry_1.DefaultRateLimiter();
this.mode = util_retry_1.RETRY_MODES.ADAPTIVE;
}
async retry(next, args) {
return super.retry(next, args, {
beforeRequest: async () => {
return this.rateLimiter.getSendToken();
},
afterRequest: (response) => {
this.rateLimiter.updateClientSendingRate(response);
},
});
}
}
exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy;