Skip to content

Commit 2f50c51

Browse files
committed
refactor(telegram): share error_code classification
1 parent 567cf24 commit 2f50c51

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

src/telegram/network-errors.ts

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -123,30 +123,27 @@ export function isSafeToRetrySendError(err: unknown): boolean {
123123
return false;
124124
}
125125

126-
/** Returns true for HTTP 5xx server errors (error may have been processed). */
127-
export function isTelegramServerError(err: unknown): boolean {
126+
function hasTelegramErrorCode(err: unknown, matches: (code: number) => boolean): boolean {
128127
for (const candidate of collectTelegramErrorCandidates(err)) {
129-
if (candidate && typeof candidate === "object" && "error_code" in candidate) {
130-
const code = (candidate as { error_code: unknown }).error_code;
131-
if (typeof code === "number" && code >= 500) {
132-
return true;
133-
}
128+
if (!candidate || typeof candidate !== "object" || !("error_code" in candidate)) {
129+
continue;
130+
}
131+
const code = (candidate as { error_code: unknown }).error_code;
132+
if (typeof code === "number" && matches(code)) {
133+
return true;
134134
}
135135
}
136136
return false;
137137
}
138138

139+
/** Returns true for HTTP 5xx server errors (error may have been processed). */
140+
export function isTelegramServerError(err: unknown): boolean {
141+
return hasTelegramErrorCode(err, (code) => code >= 500);
142+
}
143+
139144
/** Returns true for HTTP 4xx client errors (Telegram explicitly rejected, not applied). */
140145
export function isTelegramClientRejection(err: unknown): boolean {
141-
for (const candidate of collectTelegramErrorCandidates(err)) {
142-
if (candidate && typeof candidate === "object" && "error_code" in candidate) {
143-
const code = (candidate as { error_code: unknown }).error_code;
144-
if (typeof code === "number" && code >= 400 && code < 500) {
145-
return true;
146-
}
147-
}
148-
}
149-
return false;
146+
return hasTelegramErrorCode(err, (code) => code >= 400 && code < 500);
150147
}
151148

152149
export function isRecoverableTelegramNetworkError(

0 commit comments

Comments
 (0)