19 lines
406 B
JavaScript
19 lines
406 B
JavaScript
let retryPeriod = 1_000;
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
export async function persistently(func) {
|
|
try {
|
|
let res = await func();
|
|
retryPeriod = 1_000;
|
|
return res;
|
|
} catch(err) {
|
|
console.error(err);
|
|
await sleep(retryPeriod);
|
|
retryPeriod *= 2;
|
|
retryPeriod = Math.min(64_000, retryPeriod);
|
|
return persistently(func);
|
|
}
|
|
} |