l FSM frameworks becomes
  surprisingly cumbersome as soon as a lot of actions can fail and the state
  machine <b>itself</b> needs to gracefully handle these errors. Usually, a
  failing action (e.g. x()) then posts an appropriate error event and sets a
  global error variable to true. Every following action (e.g. y()) first has
  to check the error variable before doing anything. After all actions have
  completed (by doing nothing!), the previously posted error event has to be
  processed what leads to t