Fuseau.EventAtomic events.
An atomic event is something that can occur, or not occur, without in-between.
An event yielding 'a
val select : 'ret branch list -> 'retSelect between multiple events. The first one to be ready wins, and the corresponding function is called.
If no event is ready, the fiber suspends, and the wait function of each event is used to wake it up again.