fix: scope telegram polling restart to telegram errors (#43799)

* fix: scope telegram polling restart to telegram errors

* fix: make telegram error tagging best-effort

* fix: scope telegram polling restart to telegram errors (#43799)
This commit is contained in:
Ayaan Zaidi
2026-03-12 13:14:17 +05:30
committed by GitHub
parent 82e3ac21ee
commit ed0ec57a7b
7 changed files with 251 additions and 21 deletions

View File

@@ -1,12 +1,37 @@
import { describe, expect, it } from "vitest";
import {
getTelegramNetworkErrorOrigin,
isRecoverableTelegramNetworkError,
isSafeToRetrySendError,
isTelegramClientRejection,
isTelegramPollingNetworkError,
isTelegramServerError,
tagTelegramNetworkError,
} from "./network-errors.js";
describe("isRecoverableTelegramNetworkError", () => {
it("tracks Telegram polling origin separately from generic network matching", () => {
const slackDnsError = Object.assign(
new Error("A request error occurred: getaddrinfo ENOTFOUND slack.com"),
{
code: "ENOTFOUND",
hostname: "slack.com",
},
);
expect(isRecoverableTelegramNetworkError(slackDnsError)).toBe(true);
expect(isTelegramPollingNetworkError(slackDnsError)).toBe(false);
tagTelegramNetworkError(slackDnsError, {
method: "getUpdates",
url: "https://api.telegram.org/bot123456:ABC/getUpdates",
});
expect(getTelegramNetworkErrorOrigin(slackDnsError)).toEqual({
method: "getupdates",
url: "https://api.telegram.org/bot123456:ABC/getUpdates",
});
expect(isTelegramPollingNetworkError(slackDnsError)).toBe(true);
});
it("detects recoverable error codes", () => {
const err = Object.assign(new Error("timeout"), { code: "ETIMEDOUT" });
expect(isRecoverableTelegramNetworkError(err)).toBe(true);