fix(telegram): retry 421 misdirected request responses

This commit is contained in:
MarsDoge 2026-03-17 17:57:45 +08:00
parent 7303253427
commit 43086d32d7
2 changed files with 18 additions and 1 deletions

View File

@ -81,6 +81,22 @@ describe("createTelegramRetryRunner", () => {
expectedCalls: 1,
expectedError: "permission denied",
},
{
name: "retries misdirected request errors from Telegram edge nodes",
runnerOptions: {
retry: ZERO_DELAY_RETRY,
},
fnSteps: [
{
type: "reject" as const,
value: Object.assign(new Error("421 Misdirected Request"), {
status: 421,
}),
},
],
expectedCalls: 3,
expectedError: "421 Misdirected Request",
},
{
name: "keeps retrying retriable errors until attempts are exhausted",
runnerOptions: {

View File

@ -19,7 +19,8 @@ export const TELEGRAM_RETRY_DEFAULTS = {
jitter: 0.1,
};
const TELEGRAM_RETRY_RE = /429|timeout|connect|reset|closed|unavailable|temporarily/i;
const TELEGRAM_RETRY_RE =
/429|421|timeout|connect|reset|closed|unavailable|temporarily|misdirected request/i;
const log = createSubsystemLogger("retry-policy");
function resolveTelegramShouldRetry(params: {