Это улавливает каждое событие выхода, которое я могу найти, которое можно обработать. До сих пор кажется довольно надежным и чистым.
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
process.on(eventType, cleanUpServer.bind(null, eventType));
})