From c4d1c1ce9038abcfbd7185ef30332d109b4385b2 Mon Sep 17 00:00:00 2001 From: Socram03 Date: Mon, 23 Jun 2025 10:04:07 -0400 Subject: [PATCH] fix(api): handle 429 in shared scopes --- src/api/api.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/api/api.ts b/src/api/api.ts index c17fc56..846c0af 100644 --- a/src/api/api.ts +++ b/src/api/api.ts @@ -291,17 +291,19 @@ export class ApiHandler { await this.onRatelimit?.(response, request); const content = `${JSON.stringify(request)} `; - let retryAfter = + let retryAfter: number | undefined; + + const data = JSON.parse(result); + if (data.retry_after) retryAfter = Math.ceil(data.retry_after * 1000); + + retryAfter ??= Number(response.headers.get('x-ratelimit-reset-after') || response.headers.get('retry-after')) * 1000; if (Number.isNaN(retryAfter)) { - try { - retryAfter = JSON.parse(result).retry_after * 1000; - } catch (err) { - this.debugger?.warn(`Unexpected error: ${err}`); - reject(err); - return false; - } + this.debugger?.warn(`${route} Could not extract retry_after from 429 response. ${result}`); + next(); + reject(new Error('Could not extract retry_after from 429 response.')); + return false; } this.debugger?.info(