diff --git a/src/packages/core/src/server.ts b/src/packages/core/src/server.ts index 45effb1b90..58df1e04c2 100644 --- a/src/packages/core/src/server.ts +++ b/src/packages/core/src/server.ts @@ -245,7 +245,9 @@ export class Server< `listen EADDRINUSE: address already in use ${ host || DEFAULT_HOST }:${portNumber}.` - ); + ) as NodeJS.ErrnoException; + // emulate part of node's EADDRINUSE error: + err.code = "EADDRINUSE"; throw err; } }) diff --git a/src/packages/core/tests/server.test.ts b/src/packages/core/tests/server.test.ts index 09cab25b13..b1921ff7b4 100644 --- a/src/packages/core/tests/server.test.ts +++ b/src/packages/core/tests/server.test.ts @@ -493,10 +493,10 @@ describe("server", () => { server.listen(port); try { - await assert.rejects( - setup(), - `Error: listen EADDRINUSE: address already in use 127.0.0.1:${port}.` - ); + await assert.rejects(setup(), { + message: `listen EADDRINUSE: address already in use 127.0.0.1:${port}.`, + code: "EADDRINUSE" + }); } finally { await Promise.all([ teardown(), @@ -517,7 +517,8 @@ describe("server", () => { const s = Ganache.server(); const listen = promisify(s.listen.bind(s)); await assert.rejects(listen(port), { - message: `listen EADDRINUSE: address already in use 127.0.0.1:${port}.` + message: `listen EADDRINUSE: address already in use 127.0.0.1:${port}.`, + code: "EADDRINUSE" }); } finally { await Promise.all([