From 2f50c51d5acd40a0899ba4c9b557cca377cb47d2 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Wed, 11 Mar 2026 11:11:00 +0530 Subject: [PATCH] refactor(telegram): share error_code classification --- src/telegram/network-errors.ts | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/telegram/network-errors.ts b/src/telegram/network-errors.ts index e91a1a4a194..66da37c4dd4 100644 --- a/src/telegram/network-errors.ts +++ b/src/telegram/network-errors.ts @@ -123,30 +123,27 @@ export function isSafeToRetrySendError(err: unknown): boolean { return false; } -/** Returns true for HTTP 5xx server errors (error may have been processed). */ -export function isTelegramServerError(err: unknown): boolean { +function hasTelegramErrorCode(err: unknown, matches: (code: number) => boolean): boolean { for (const candidate of collectTelegramErrorCandidates(err)) { - if (candidate && typeof candidate === "object" && "error_code" in candidate) { - const code = (candidate as { error_code: unknown }).error_code; - if (typeof code === "number" && code >= 500) { - return true; - } + if (!candidate || typeof candidate !== "object" || !("error_code" in candidate)) { + continue; + } + const code = (candidate as { error_code: unknown }).error_code; + if (typeof code === "number" && matches(code)) { + return true; } } return false; } +/** Returns true for HTTP 5xx server errors (error may have been processed). */ +export function isTelegramServerError(err: unknown): boolean { + return hasTelegramErrorCode(err, (code) => code >= 500); +} + /** Returns true for HTTP 4xx client errors (Telegram explicitly rejected, not applied). */ export function isTelegramClientRejection(err: unknown): boolean { - for (const candidate of collectTelegramErrorCandidates(err)) { - if (candidate && typeof candidate === "object" && "error_code" in candidate) { - const code = (candidate as { error_code: unknown }).error_code; - if (typeof code === "number" && code >= 400 && code < 500) { - return true; - } - } - } - return false; + return hasTelegramErrorCode(err, (code) => code >= 400 && code < 500); } export function isRecoverableTelegramNetworkError(