fix(rest): Use Retry-After header for retrying requests (#4739)

* fix(rest): Use Retry-After header for retrying requests

According to discord docs: Your application should rely on the Retry-After header [...] to determine when to retry the request.

* also use in processHeaders()

---------

Co-authored-by: Awesome Stickz <kiran121102@gmail.com>
This commit is contained in:
Fleny
2026-02-10 17:48:19 +01:00
committed by GitHub
parent 53ce4207d7
commit a88aa33341

View File

@@ -352,7 +352,7 @@ export function createRestManager(options: CreateRestManagerOptions): RestManage
// GET ALL NECESSARY HEADERS
const remaining = headers.get(RATE_LIMIT_REMAINING_HEADER);
const retryAfter = headers.get(RATE_LIMIT_RESET_AFTER_HEADER);
const retryAfter = headers.get('Retry-After') ?? headers.get(RATE_LIMIT_RESET_AFTER_HEADER);
const reset = Date.now() + Number(retryAfter) * 1000;
const global = headers.get(RATE_LIMIT_GLOBAL_HEADER);
// undefined override null needed for typings
@@ -500,7 +500,7 @@ export function createRestManager(options: CreateRestManagerOptions): RestManage
options.retryCount += 1;
const resetAfter = response.headers.get(RATE_LIMIT_RESET_AFTER_HEADER);
const resetAfter = response.headers.get('retry-after');
if (resetAfter) await delay(Number(resetAfter) * 1000);
return await options.retryRequest?.(options);
@@ -579,7 +579,7 @@ export function createRestManager(options: CreateRestManagerOptions): RestManage
return;
}
// If we the request has a token, use it
// If the request has a token, use it
// Else fallback to prefix with the bot token
const queueIdentifier = request.requestBodyOptions?.headers?.authorization ?? `Bot ${rest.token}`;