Skip to content

Commit 5c90b1a

Browse files
committed
[scramjet/runway] fix hang on server close
1 parent 7dfecee commit 5c90b1a

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

packages/scramjet/packages/runway/src/testcommon.ts

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,21 @@ export function basicTest(props: {
152152
});
153153
},
154154
async stop() {
155-
return new Promise((resolve) => {
156-
server.close(() => resolve());
157-
});
155+
return Promise.race([
156+
new Promise<void>((resolve) => {
157+
// Close all active connections first to prevent hanging
158+
if (server.closeAllConnections) {
159+
server.closeAllConnections();
160+
}
161+
server.close(() => resolve());
162+
}),
163+
new Promise<void>((_, reject) => {
164+
setTimeout(
165+
() => reject(new Error("Server stop timed out after 5 seconds")),
166+
5000
167+
);
168+
}),
169+
]);
158170
},
159171
};
160172
}
@@ -256,9 +268,21 @@ export function serverTest(props: {
256268
});
257269
},
258270
async stop() {
259-
return new Promise<void>((resolve) => {
260-
server.close(() => resolve());
261-
});
271+
return Promise.race([
272+
new Promise<void>((resolve) => {
273+
// Close all active connections first to prevent hanging
274+
if (server.closeAllConnections) {
275+
server.closeAllConnections();
276+
}
277+
server.close(() => resolve());
278+
}),
279+
new Promise<void>((_, reject) => {
280+
setTimeout(
281+
() => reject(new Error("Server stop timed out after 5 seconds")),
282+
5000
283+
);
284+
}),
285+
]);
262286
},
263287
};
264288
}

0 commit comments

Comments
 (0)