From 3987ca409963faca60cf4ee299d98e9ddd25922d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 8 Mar 2026 01:10:21 +0000 Subject: [PATCH] refactor(retry): simplify telegram shouldRetry composition --- src/infra/retry-policy.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/infra/retry-policy.ts b/src/infra/retry-policy.ts index 26ecb71e8a0..725357b440e 100644 --- a/src/infra/retry-policy.ts +++ b/src/infra/retry-policy.ts @@ -22,6 +22,20 @@ export const TELEGRAM_RETRY_DEFAULTS = { const TELEGRAM_RETRY_RE = /429|timeout|connect|reset|closed|unavailable|temporarily/i; const log = createSubsystemLogger("retry-policy"); +function resolveTelegramShouldRetry(params: { + shouldRetry?: (err: unknown) => boolean; + strictShouldRetry?: boolean; +}) { + if (!params.shouldRetry) { + return (err: unknown) => TELEGRAM_RETRY_RE.test(formatErrorMessage(err)); + } + if (params.strictShouldRetry) { + return params.shouldRetry; + } + return (err: unknown) => + params.shouldRetry?.(err) || TELEGRAM_RETRY_RE.test(formatErrorMessage(err)); +} + function getTelegramRetryAfterMs(err: unknown): number | undefined { if (!err || typeof err !== "object") { return undefined; @@ -88,12 +102,7 @@ export function createTelegramRetryRunner(params: { ...params.configRetry, ...params.retry, }); - const shouldRetry = params.shouldRetry - ? params.strictShouldRetry - ? params.shouldRetry - : (err: unknown) => - params.shouldRetry?.(err) || TELEGRAM_RETRY_RE.test(formatErrorMessage(err)) - : (err: unknown) => TELEGRAM_RETRY_RE.test(formatErrorMessage(err)); + const shouldRetry = resolveTelegramShouldRetry(params); return (fn: () => Promise, label?: string) => retryAsync(fn, {