
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
signal-exit
Advanced tools
When you want to fire an event no matter how a process exits:
process.exit(code) called.process.kill(pid, sig) called.Use signal-exit.
// Hybrid module, either works
import { onExit } from 'signal-exit'
// or:
// const { onExit } = require('signal-exit')
onExit((code, signal) => {
console.log('process exited!', code, signal)
})
remove = onExit((code, signal) => {}, options)
The return value of the function is a function that will remove the handler.
Note that the function only fires for signals if the signal would cause the process to exit. That is, there are no other listeners, and it is a fatal signal.
If the global process object is not suitable for this purpose
(ie, it's unset, or doesn't have an emit method, etc.) then the
onExit function is a no-op that returns a no-op remove method.
alwaysLast: Run this handler after any other signal or exit
handlers. This causes process.emit to be monkeypatched.If the handler returns an exact boolean true, and the exit is a
due to signal, then the signal will be considered handled, and
will not trigger a synthetic process.kill(process.pid, signal) after firing the onExit handlers.
In this case, it your responsibility as the caller to exit with a
signal (for example, by calling process.kill()) if you wish to
preserve the same exit status that would otherwise have occurred.
If you do not, then the process will likely exit gracefully with
status 0 at some point, assuming that no other terminating signal
or other exit trigger occurs.
Prior to calling handlers, the onExit machinery is unloaded, so
any subsequent exits or signals will not be handled, even if the
signal is captured and the exit is thus prevented.
Note that numeric code exits may indicate that the process is already committed to exiting, for example due to a fatal exception or unhandled promise rejection, and so there is no way to prevent it safely.
The 'signal-exit/browser' module is the same fallback shim that
just doesn't do anything, but presents the same function
interface.
Patches welcome to add something that hooks onto
window.onbeforeunload or similar, but it might just not be a
thing that makes sense there.
The exit-hook package provides similar functionality to signal-exit, allowing developers to register callbacks that are executed when the process exits. It also captures uncaught exceptions and unhandled promise rejections. Compared to signal-exit, exit-hook may offer a simpler API but might not handle all the edge cases that signal-exit does.
async-exit-hook is another package that allows you to run asynchronous code when the process exits. It is similar to signal-exit but focuses on supporting asynchronous operations during the exit handling. This can be particularly useful for ensuring that database connections are closed or files are written before the process terminates.
The death package (also known as DEATH on npm) is a simple utility to make handling UNIX signals and uncaught exceptions in Node.js easier. It provides a straightforward way to clean up after your script without much fuss. Compared to signal-exit, death has a more focused scope and does not handle normal process termination.
FAQs
when you want to fire an event no matter how a process exits.
We found that signal-exit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.