summaryrefslogtreecommitdiff
path: root/ui/lib/retry.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/lib/retry.js')
-rw-r--r--ui/lib/retry.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/ui/lib/retry.js b/ui/lib/retry.js
new file mode 100644
index 0000000..777f1be
--- /dev/null
+++ b/ui/lib/retry.js
@@ -0,0 +1,21 @@
+export async function retry(callback, retryCond, delay) {
+ while (true) {
+ try {
+ return await callback();
+ } catch (err) {
+ if (retryCond(err)) {
+ await delay();
+ } else {
+ throw err;
+ }
+ }
+ }
+}
+
+export function delay(millis) {
+ return async () => await sleep(millis);
+}
+
+function sleep(millis) {
+ return new Promise((resolve) => setTimeout(resolve, millis));
+}