import { createServer } from "node:http"; import type { AddressInfo } from "node:net"; export async function getFreePort(): Promise { while (true) { const port = await new Promise((resolve, reject) => { const s = createServer(); s.once("error", reject); s.listen(0, "127.0.0.1", () => { const assigned = (s.address() as AddressInfo).port; s.close((err) => (err ? reject(err) : resolve(assigned))); }); }); if (port < 65535) { return port; } } }