From e8cbc1ee8a5ea53150b778e8d666d75d34b764cc Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 5 Apr 2026 14:11:29 +0100 Subject: [PATCH] fix(discord): support carbon ratelimit signature drift --- extensions/discord/src/proxy-request-client.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/extensions/discord/src/proxy-request-client.ts b/extensions/discord/src/proxy-request-client.ts index 6d00add05cc..5a18161fbc2 100644 --- a/extensions/discord/src/proxy-request-client.ts +++ b/extensions/discord/src/proxy-request-client.ts @@ -93,6 +93,19 @@ function toRateLimitBody(parsedBody: unknown, rawBody: string, headers: Headers) }; } +type RateLimitBody = ReturnType; + +function createRateLimitErrorCompat( + response: Response, + body: RateLimitBody, + request: Request, +): RateLimitError { + const RateLimitErrorCtor = RateLimitError as unknown as { + new (response: Response, body: RateLimitBody, request?: Request): RateLimitError; + }; + return new RateLimitErrorCtor(response, body, request); +} + function toDiscordErrorBody(parsedBody: unknown, rawBody: string): DiscordRawError { if (isRecord(parsedBody) && typeof parsedBody.message === "string") { return parsedBody as DiscordRawError; @@ -333,7 +346,7 @@ class ProxyRequestClientCompat { if (response.status === 429) { const rateLimitBody = toRateLimitBody(parsedBody, rawBody, response.headers); - const rateLimitError = new RateLimitError(response, rateLimitBody, originalRequest); + const rateLimitError = createRateLimitErrorCompat(response, rateLimitBody, originalRequest); this.scheduleRateLimit( routeKey, rateLimitError.retryAfter,