summaryrefslogtreecommitdiff
path: root/packages/frontend-shared
diff options
context:
space:
mode:
authorOutvi V <git@outv.im>2025-06-01 13:07:57 +0800
committerOutvi V <git@outv.im>2025-06-01 13:07:57 +0800
commite8f218027998d394406b03c70de73889669fc286 (patch)
treeb1675ddfd406e01ac8ba9ca3f722879dca975ac8 /packages/frontend-shared
parentchore: lint (diff)
downloadsharkey-e8f218027998d394406b03c70de73889669fc286.tar.gz
sharkey-e8f218027998d394406b03c70de73889669fc286.tar.bz2
sharkey-e8f218027998d394406b03c70de73889669fc286.zip
fix: simplify the code
Diffstat (limited to 'packages/frontend-shared')
-rw-r--r--packages/frontend-shared/js/retry-on-throttled.ts42
1 files changed, 14 insertions, 28 deletions
diff --git a/packages/frontend-shared/js/retry-on-throttled.ts b/packages/frontend-shared/js/retry-on-throttled.ts
index 9287f3a715..37a7f40c73 100644
--- a/packages/frontend-shared/js/retry-on-throttled.ts
+++ b/packages/frontend-shared/js/retry-on-throttled.ts
@@ -7,34 +7,20 @@ async function sleep(ms: number): Promise<void> {
}
export async function retryOnThrottled<T>(f: () => Promise<T>, retryCount = 5): Promise<T> {
- let lastOk = false;
- let lastResultOrError: T | Error = new Error("No attempt has been done");
- for (let i = 0; i < Math.min(retryCount, 1); i++) {
- const [ok, resultOrError] = await f()
- .then(result => [true, result])
- .catch(err => [false, err]);
-
- lastOk = ok;
- lastResultOrError = resultOrError;
-
- if (ok) {
- break;
- }
-
- // RATE_LIMIT_EXCEEDED
- if (resultOrError?.id === 'd5826d14-3982-4d2e-8011-b9e9f02499ef') {
- await sleep(resultOrError?.info?.fullResetMs ?? 1000);
- continue;
- }
-
- // Throw for non-throttling errors
- throw resultOrError;
+ let lastError;
+ for (let i = 0; i < Math.min(retryCount, 1); i++) {
+ try {
+ return await f();
+ } catch (err) {
+ // RATE_LIMIT_EXCEEDED
+ if (err?.id === 'd5826d14-3982-4d2e-8011-b9e9f02499ef') {
+ lastError = err;
+ await sleep(err?.info?.fullResetMs ?? 1000);
+ } else {
+ throw err;
+ }
}
+ }
- if (lastOk) {
- return lastResultOrError as T;
- } else {
- // Give up after getting throttled too many times
- throw lastResultOrError;
- }
+ throw lastError;
}