




















@@ -76,6 +76,22 @@ import { feishuPlugin } from "./channel.js";
7676import { feishuOutbound } from "./outbound.js";
7777import { createFeishuSendReceipt } from "./send-result.js";
787879+async function raceWithNextMacrotask<T>(promise: Promise<T>): Promise<T | "pending"> {
80+let timer: ReturnType<typeof setTimeout> | undefined;
81+try {
82+return await Promise.race([
83+promise,
84+new Promise<"pending">((resolve) => {
85+timer = setTimeout(() => resolve("pending"), 0);
86+}),
87+]);
88+} finally {
89+if (timer) {
90+clearTimeout(timer);
91+}
92+}
93+}
94+7995type FeishuSendText = NonNullable<typeof feishuOutbound.sendText>;
8096type FeishuMessageAdapter = NonNullable<typeof feishuPlugin.message>;
8197type FeishuMessageSender = NonNullable<FeishuMessageAdapter["send"]>;
@@ -867,10 +883,7 @@ describe("feishuOutbound comment-thread routing", () => {
867883accountId: "main",
868884});
869885870-const status = await Promise.race([
871-sendPromise.then(() => "done"),
872-new Promise<string>((resolve) => setTimeout(() => resolve("pending"), 0)),
873-]);
886+const status = await raceWithNextMacrotask(sendPromise.then(() => "done"));
874887875888expect(status).toBe("done");
876889expect(deliverCommentThreadTextMock).toHaveBeenCalled();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。