fix(whatsapp): preserve disconnect errors (#105399)

This commit is contained in:
Peter Steinberger
2026-07-12 15:17:34 +01:00
committed by GitHub
parent baa9eb4d7b
commit b16be75cf2
2 changed files with 20 additions and 1 deletions

View File

@@ -597,6 +597,24 @@ describe("web session", () => {
await expect(promise).rejects.toBeInstanceOf(Error);
});
it("preserves the underlying Baileys disconnect error", async () => {
const ev = new EventEmitter();
const promise = waitForWaConnection(
{ ev } as unknown as ReturnType<typeof baileys.makeWASocket>,
{ timeout: "none" },
);
const disconnectError = Object.assign(new Error("logged out"), {
output: { statusCode: 401 },
});
ev.emit("connection.update", {
connection: "close",
lastDisconnect: { date: new Date(), error: disconnectError },
});
const error = await promise.catch((caught: unknown) => caught);
expect(error).toBe(disconnectError);
expect(error).toMatchObject({ message: "logged out", output: { statusCode: 401 } });
});
it("rejects after timeout with no connection event", async () => {
vi.useFakeTimers();
const ev = new EventEmitter();

View File

@@ -513,9 +513,10 @@ export async function waitForWaConnection(
}
if (update.connection === "close") {
cleanup();
const disconnectError = update.lastDisconnect?.error ?? update.lastDisconnect;
reject(
toLintErrorObject(
update.lastDisconnect ?? new Error("Connection closed"),
disconnectError ?? new Error("Connection closed"),
"Non-Error rejection",
),
);