Initial
This commit is contained in:
24
resources/app/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js
generated
vendored
Normal file
24
resources/app/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
import { RETRY_MODES } from "./config";
|
||||
import { DefaultRateLimiter } from "./DefaultRateLimiter";
|
||||
import { StandardRetryStrategy } from "./StandardRetryStrategy";
|
||||
export class AdaptiveRetryStrategy {
|
||||
constructor(maxAttemptsProvider, options) {
|
||||
this.maxAttemptsProvider = maxAttemptsProvider;
|
||||
this.mode = RETRY_MODES.ADAPTIVE;
|
||||
const { rateLimiter } = options ?? {};
|
||||
this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();
|
||||
this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);
|
||||
}
|
||||
async acquireInitialRetryToken(retryTokenScope) {
|
||||
await this.rateLimiter.getSendToken();
|
||||
return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);
|
||||
}
|
||||
async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {
|
||||
this.rateLimiter.updateClientSendingRate(errorInfo);
|
||||
return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);
|
||||
}
|
||||
recordSuccess(token) {
|
||||
this.rateLimiter.updateClientSendingRate({});
|
||||
this.standardRetryStrategy.recordSuccess(token);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user