An event is a bit like a signal where all handlers are dispatched immediately. In other words, as soon as the event is triggered, all
background tasks will be passed to the pool, all idle callback tasks will be added
to the idle queue, and all blocking tasks will be woken.
An interesting side-effect of this is that Event.SourceFunc callbacks can
be executed after they return false, since other events may have caused the callback to be queued again. If you want to make sure that a
callback is not invoked again you should use the cancellable.