Make sure that the server builder propagates init errors properly

Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2021-11-11 11:58:33 +01:00
parent f979fcf519
commit a8732a1200
3 changed files with 34 additions and 18 deletions
@@ -176,25 +176,29 @@ export class ServiceBuilderImpl implements ServiceBuilder {
: createHttpServer(app, logger);
return new Promise((resolve, reject) => {
app.on('error', e => {
logger.error(`Failed to start up on port ${port}, ${e}`);
function handleStartupError(e: unknown) {
server.close();
reject(e);
}
app.on('error', handleStartupError);
server.on('error', handleStartupError);
server.listen(port, host, () => {
app.off('error', handleStartupError);
server.off('error', handleStartupError);
const stoppableServer = stoppable(server, 0);
useHotCleanup(this.module, () =>
stoppableServer.stop((e: any) => {
if (e) console.error(e);
}),
);
logger.info(`Listening on ${host}:${port}`);
resolve(stoppableServer);
});
const stoppableServer = stoppable(
server.listen(port, host, () => {
logger.info(`Listening on ${host}:${port}`);
}),
0,
);
useHotCleanup(this.module, () =>
stoppableServer.stop((e: any) => {
if (e) console.error(e);
}),
);
resolve(stoppableServer);
});
}
+1 -1
View File
@@ -140,7 +140,7 @@ async function main() {
await service.start().catch(err => {
logger.error(err);
process.exit(1);
throw err;
});
}