diff options
| author | Outvi V <git@outv.im> | 2025-05-31 22:50:21 +0800 |
|---|---|---|
| committer | Outvi V <git@outv.im> | 2025-05-31 22:50:21 +0800 |
| commit | e36ea27517c43352fe3173f54e558ad549388f0e (patch) | |
| tree | 772c60a0e09849a0a5987adfc863f2438cec4dbc /packages/frontend/src/components | |
| parent | chore: lint (diff) | |
| download | sharkey-e36ea27517c43352fe3173f54e558ad549388f0e.tar.gz sharkey-e36ea27517c43352fe3173f54e558ad549388f0e.tar.bz2 sharkey-e36ea27517c43352fe3173f54e558ad549388f0e.zip | |
fix(page.note): throw (not return) on all attempts throttled
Diffstat (limited to 'packages/frontend/src/components')
| -rw-r--r-- | packages/frontend/src/components/page/page.note.vue | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/packages/frontend/src/components/page/page.note.vue b/packages/frontend/src/components/page/page.note.vue index f459a437d2..cc1075d42a 100644 --- a/packages/frontend/src/components/page/page.note.vue +++ b/packages/frontend/src/components/page/page.note.vue @@ -37,13 +37,15 @@ async function sleep(ms: number): Promise<void> { } async function retryOnThrottle<T>(f: ()=>Promise<T>, retryCount = 5): Promise<T> { - let lastResult: T; + let lastOk: boolean; + let lastResultOrError: T; for (let i = 0; i < retryCount; i++) { const [ok, resultOrError] = await f() .then(result => [true, result]) .catch(err => [false, err]); - lastResult = resultOrError; + lastOk = ok; + lastResultOrError = resultOrError; if (ok) { break; @@ -55,9 +57,16 @@ async function retryOnThrottle<T>(f: ()=>Promise<T>, retryCount = 5): Promise<T> continue; } + // Throw for non-throttling errors throw resultOrError; } - return lastResult; + + if (lastOk) { + return lastResultOrError; + } else { + // Give up after getting throttled too many times + throw lastResultOrError; + } } onMounted(() => { |