blob: ab0ae259f94056604ce1501fb45818ac096a6f12 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
let defaultInterval = 100;
let defaultTimeout = 2000;
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const eventually = async (fn, timeout = defaultTimeout, interval = defaultInterval) => {
let start = Date.now();
let loop = async() => {
try {
await fn();
} catch (err) {
if (Date.now() - start > timeout) {
throw err;
}
await new Promise((resolve) => setTimeout(resolve, interval))
await loop();
}
};
await loop();
};
module.exports = eventually;
|