Supervision

A supervisor is an actor which holds specifications describing the
construction and maintenance of other, supervised (“child”), actors.

When a supervised actor terminates, the supervisor restarts it,
following the specification associated with it when it was added to
the supervisor.

Erlang has a rich suite of supervisor behaviors; so far, this library
includes only a very simple Supervisor class that offers the ability
to restart child actors after they terminate, so long as either they
terminate normally (with nil exit reason) or they do not terminate
abnormally more frequently than a configured limit.