diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-04-23 22:19:24 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-04-23 22:19:24 -0400 |
| commit | 713afd0b4963460cc37b3767c6b542c8c828d227 (patch) | |
| tree | 5156b6874cdd3cde684b4719d5e8fe1500b47612 /ui/lib/retry.js | |
| parent | 1ebe642ebe7c9ba72eb1713ec21f0cd03949a47f (diff) | |
| parent | 4d6cc62f0c9bb5d50720c83fb1ecbd0889d2acd3 (diff) | |
Retry boot every five seconds.
Merged in spite of misgivings. This method will loop over the request until it completes, even if the user moves to a view where the response is no longer relevant.
Diffstat (limited to 'ui/lib/retry.js')
| -rw-r--r-- | ui/lib/retry.js | 21 |
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..a2cff65 --- /dev/null +++ b/ui/lib/retry.js @@ -0,0 +1,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)); +} |
