summaryrefslogtreecommitdiff
path: root/ui/lib/retry.js
blob: a2cff650128059a76944a87ca27d105141a29529 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export async function retry(callback, shouldRetry, delay) {
  while (true) {
    try {
      return await callback();
    } catch (err) {
      if (shouldRetry(err)) {
        await delay();
      } else {
        throw err;
      }
    }
  }
}

export function timedDelay(millis) {
  return async () => await sleep(millis);
}

function sleep(millis) {
  return new Promise((resolve) => setTimeout(resolve, millis));
}