Time-Out: Elixir State Machines versus Servers
I love gen_statem (and the Elixir wrapper gen_state_machine).