Introduction Traditionally, event-driven applications use a central event-loop: while waiting for events: get ready events handle events Event handling may get complicated: Every new event type requires special handling. while waiting for events: for each ready event: if event is of type A: handle event type A if event is of type B: handle event type B if event is of type C: handle event type C ...