about summary refs log tree commit diff
path: root/src/lib/async
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/async')
-rw-r--r--src/lib/async/retry.ts13
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
       }