fix(cli): follow promise resolver convention

This commit is contained in:
can1357
2026-08-05 01:00:51 +02:00
parent e4684325a3
commit 43666b3b1a
2 changed files with 11 additions and 10 deletions
@@ -99,15 +99,14 @@ export async function runPrintMode(session: AgentSession, options: PrintModeOpti
// tail before dispose/exit. Same truncation class as issue #5309 (issue #7635).
let stdoutTail: Promise<void> = Promise.resolve();
const writeStdoutLine = (text: string): void => {
stdoutTail = stdoutTail.then(
() =>
new Promise<void>(resolve => {
process.stdout.write(text, err => {
if (err) logger.warn("print-mode stdout write failed", { error: err.message });
resolve();
});
}),
);
stdoutTail = stdoutTail.then(() => {
const { promise, resolve, reject } = Promise.withResolvers<void>();
process.stdout.write(text, err => {
if (err) reject(err);
else resolve();
});
return promise;
});
};
// Emit session header for JSON mode
@@ -127,7 +127,9 @@ describe("print-mode JSON flush (#7635)", () => {
// them all. The pre-fix fire-and-forget path settles and disposes here;
// the fix must still be blocked on the undrained agent_end write.
await agentEndWriteIssued;
await new Promise<void>(resolve => setImmediate(resolve));
const { promise: nextTask, resolve: resolveNextTask } = Promise.withResolvers<void>();
setImmediate(resolveNextTask);
await nextTask;
expect(releaseAgentEnd).toBeDefined();
expect(settled).toBe(false);
expect(harness.disposed()).toBe(false);