Truly re-entrant Signal.
Truly re-entrant Signal.

Every time you `notify` you send the arguments only to the waiting
listeners added since the last time you called `notify`. The array of
waits is gathered in a cancel array that is now separate so that you can
have a go at cancelling any outstanding wait even if you're in a nested
callback to a waiting listener.

This re-entrant implementation ought to be easier to read and reason
about after some time away from the code.

bigeasy/vestibule,bigeasy/vestibule,bigeasy/signal