@keplr-ewallet/ewallet-sdk-cosmos
Version:
30 lines • 886 B
JavaScript
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export async function retry(task, opts) {
let retries = 0;
while (true) {
try {
const promise = task();
return await promise;
}
catch (e) {
if (retries >= opts.maxRetries) {
throw e;
}
if (opts.onFailed) {
opts.onFailed(e);
}
let waitMs = opts.waitMsAfterError || 0;
if (waitMs > 0) {
if (opts.maxWaitMsAfterError != null && opts.maxWaitMsAfterError > 0) {
waitMs = 2 ** retries * waitMs;
waitMs = Math.min(waitMs, opts.maxWaitMsAfterError);
}
await sleep(waitMs);
}
retries++;
}
}
}
//# sourceMappingURL=retry.js.map