diff options
Diffstat (limited to 'src/lib/async/retry.ts')
-rw-r--r-- | src/lib/async/retry.ts | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/async/retry.ts b/src/lib/async/retry.ts index abf78de55..8a1729091 100644 --- a/src/lib/async/retry.ts +++ b/src/lib/async/retry.ts @@ -1,17 +1,22 @@ +import {timeout} from '#/lib/async/timeout' import {isNetworkError} from '#/lib/strings/errors' export async function retry<P>( retries: number, - cond: (err: any) => boolean, - fn: () => Promise<P>, + shouldRetry: (err: any) => boolean, + action: () => Promise<P>, + delay?: number, ): Promise<P> { let lastErr while (retries > 0) { try { - return await fn() + return await action() } catch (e: any) { lastErr = e - if (cond(e)) { + if (shouldRetry(e)) { + if (delay) { + await timeout(delay) + } retries-- continue } |