nlw-api/persistance.js

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);
}
}