Yet another POSIX signal handler.

Downloads in past


020.3.1a month ago4 years agoMinified + gzip package size for @darkobits/adeiu in KB


Yet another POSIX signal handler.


  • Ensures provided functions are called before any other event listeners and are run concurrently,
minimizing shutdown time.
  • Works with any combination of synchronous and asynchronous functions.
  • Ensures a clean exit if all functions resolve/return.
  • Exits with an error if any functions reject/throw.
  • Ensures processes exit cleanly, even when they have asynchronous shut-down functions and the Node
debugger is in use. (See this issue)


npm i @darkobits/adeiu


Adeiu accepts an asynchronous or synchronous handler function. By default, the handler will be registered to respond to the following signals:

import adeiu from '@darkobits/adeiu';

adeiu(async signal => {
  console.log(`Hey, we got ${signal}. Exiting...`);

  await someAsyncStuff();

  console.log('All done!');

// Un-register the callback.

Unregistering Handlers

Adeiu returns a function that can be invoked to unregister a handler.
import adeiu from '@darkobits/adeiu';

const unregister = adeiu(() => {
  // Handler implementation here.

// Un-register the handler.

Customizing Signals

Usually, responding to signals dynamically can be accomplished by inspecting the signal argument passed to your handler. However, if it is important that handlers are only installed on a particular signal, or if you'd like to respond to signals other than the defaults, you may optionally provide a custom array of signals as a second argument:
import adeiu from '@darkobits/adeiu';

// Register callback that will _only_ be invoked on SIGINT:
adeiu(() => {
  // SIGINT cleanup tasks.
}, ['SIGINT']);

import adeiu from '@darkobits/adeiu';

// Register callback with the default signals _and_ SIGUSR1:
adeiu(() => {
  // Custom cleanup tasks.
}, [...adeiu.SIGNALS, 'SIGUSR1']);