import type { Server } from 'node:http' import { createServer } from 'node:http' /** * Creates an HTTP server bound to an OS-assigned port by listening on port 0. * * This avoids the TOCTOU race present in the get-port pattern * (bind to 0 → read port → close → re-listen on that port) which causes * `EADDRINUSE` under WSL2 mirrored networking, where the kernel holds a * phantom listener on ephemeral ports for ~1 second after close. * * The returned server is already listening; callers should read the port via * `(server.address() as AddressInfo).port`. */ export function createBoundServer(): Promise { return new Promise((resolve, reject) => { const server = createServer() server.unref() const onError = (err: unknown) => { reject(err) } server.once('error', onError) server.listen(0, () => { server.off('error', onError) resolve(server) }) }) }