fix(cli): follow promise resolver convention
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user