From e36ea27517c43352fe3173f54e558ad549388f0e Mon Sep 17 00:00:00 2001 From: Outvi V Date: Sat, 31 May 2025 22:50:21 +0800 Subject: [PATCH] fix(page.note): throw (not return) on all attempts throttled --- .../frontend/src/components/page/page.note.vue | 15 ++++++++++++--- 1 file 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 { } async function retryOnThrottle(f: ()=>Promise, retryCount = 5): Promise { - 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(f: ()=>Promise, retryCount = 5): Promise 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(() => {