It is based on an
observe-select-execute cycle, in which it first observes
which events are relevant to the app in the current state, then
selects one of those events, and finally executes the selected
event to yield a new state in which it repeats this process