@prelude/function
Version:
Function module.
15 lines • 494 B
JavaScript
import sleep from './sleep.js';
const eventually = async (f, { retry = _ => _ < 10, delay = 1000, predicate = _ => Boolean(_), reject = _ => { throw _; } } = {}) => {
const before = Date.now();
let i = 0;
while (retry(i++, Date.now() - before)) {
const r = await f().catch(reject);
if (predicate(r)) {
return r;
}
await sleep(delay);
}
return reject(undefined);
};
export default eventually;
//# sourceMappingURL=eventually.js.map