From the new documentation of gen_statem:
The gen_statem behaviour is intended to replace
gen_fsmfor new code. It has the same features and add some really useful:
- State code is gathered
- The state can be any term
- Events can be postponed
- Events can be self generated
- A reply can be sent from a later state
- There can be multiple sys traceable replies






















