summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorOutvi V <git@outv.im>2025-05-31 22:50:21 +0800
committerOutvi V <git@outv.im>2025-05-31 22:50:21 +0800
commite36ea27517c43352fe3173f54e558ad549388f0e (patch)
tree772c60a0e09849a0a5987adfc863f2438cec4dbc /packages/frontend/src/components
parentchore: lint (diff)
downloadsharkey-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.vue15
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(() => {