test: use immediate for feishu pending races · openclaw/openclaw@ef8fd8f
steipete
·
2026-05-12
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -35,19 +35,12 @@ vi.mock("./runtime.js", () => ({
|
35 | 35 | import { createFeishuCommentReplyDispatcher } from "./comment-dispatcher.js"; |
36 | 36 | |
37 | 37 | async function raceWithNextMacrotask<T>(promise: Promise<T>): Promise<T | "pending"> { |
38 | | -let timer: ReturnType<typeof setTimeout> | undefined; |
39 | | -try { |
40 | | -return await Promise.race([ |
41 | | -promise, |
42 | | -new Promise<"pending">((resolve) => { |
43 | | -timer = setTimeout(() => resolve("pending"), 0); |
44 | | -}), |
45 | | -]); |
46 | | -} finally { |
47 | | -if (timer) { |
48 | | -clearTimeout(timer); |
49 | | -} |
50 | | -} |
| 38 | +return await Promise.race([ |
| 39 | +promise, |
| 40 | +new Promise<"pending">((resolve) => { |
| 41 | +setImmediate(() => resolve("pending")); |
| 42 | +}), |
| 43 | +]); |
51 | 44 | } |
52 | 45 | |
53 | 46 | describe("createFeishuCommentReplyDispatcher", () => { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -30,19 +30,12 @@ vi.mock("./drive.js", () => ({
|
30 | 30 | })); |
31 | 31 | |
32 | 32 | async function raceWithNextMacrotask<T>(promise: Promise<T>): Promise<T | "pending"> { |
33 | | -let timer: ReturnType<typeof setTimeout> | undefined; |
34 | | -try { |
35 | | -return await Promise.race([ |
36 | | -promise, |
37 | | -new Promise<"pending">((resolve) => { |
38 | | -timer = setTimeout(() => resolve("pending"), 0); |
39 | | -}), |
40 | | -]); |
41 | | -} finally { |
42 | | -if (timer) { |
43 | | -clearTimeout(timer); |
44 | | -} |
45 | | -} |
| 33 | +return await Promise.race([ |
| 34 | +promise, |
| 35 | +new Promise<"pending">((resolve) => { |
| 36 | +setImmediate(() => resolve("pending")); |
| 37 | +}), |
| 38 | +]); |
46 | 39 | } |
47 | 40 | |
48 | 41 | function buildConfig(overrides?: Partial<ClawdbotConfig>): ClawdbotConfig { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -22,19 +22,12 @@ function createFeishuToolRuntime(): PluginRuntime {
|
22 | 22 | } |
23 | 23 | |
24 | 24 | async function raceWithNextMacrotask<T>(promise: Promise<T>): Promise<T | "pending"> { |
25 | | -let timer: ReturnType<typeof setTimeout> | undefined; |
26 | | -try { |
27 | | -return await Promise.race([ |
28 | | -promise, |
29 | | -new Promise<"pending">((resolve) => { |
30 | | -timer = setTimeout(() => resolve("pending"), 0); |
31 | | -}), |
32 | | -]); |
33 | | -} finally { |
34 | | -if (timer) { |
35 | | -clearTimeout(timer); |
36 | | -} |
37 | | -} |
| 25 | +return await Promise.race([ |
| 26 | +promise, |
| 27 | +new Promise<"pending">((resolve) => { |
| 28 | +setImmediate(() => resolve("pending")); |
| 29 | +}), |
| 30 | +]); |
38 | 31 | } |
39 | 32 | |
40 | 33 | function createDriveToolApi(params: { |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -77,19 +77,12 @@ import { feishuOutbound } from "./outbound.js";
|
77 | 77 | import { createFeishuSendReceipt } from "./send-result.js"; |
78 | 78 | |
79 | 79 | 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 | | -} |
| 80 | +return await Promise.race([ |
| 81 | +promise, |
| 82 | +new Promise<"pending">((resolve) => { |
| 83 | +setImmediate(() => resolve("pending")); |
| 84 | +}), |
| 85 | +]); |
93 | 86 | } |
94 | 87 | |
95 | 88 | type FeishuSendText = NonNullable<typeof feishuOutbound.sendText>; |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。