Soda or candy machine is basically what a real FSM is : it needs clearly defined states and transitions so there is no bugs.
Who knew! I must’ve missed that lesson. 

I find I’m fascinated by this forum discussion. In another thread I mentioned the 100.000 hours under my belt. Plowing through quick basic, c/c++, prolog, Haskell, xslt, ruby, php, Java 5 up to 21, python 2 and 3, js, ts and now gdscript. 30.000 Euro in student loan debt to boot.
And all this time I remained dumbfounded by what the hell my teacher in bayesian statistics and machine learning meant by: finite state machine.
The more I learn about programming, the less convinced I become about understanding any of it.
Up to the point that I started thinking it must be me (when they started asking my wise opinions about “AI”). I didn’t have any, they lost me, I must’ve been prompting it wrong.
My best understanding of all this FSM was: must be like the elegance of php’s die("do it early");
Anyway. Thank you. It’s a machine, make sure the candy doesn’t get stuck.
So all names for things in code are a metaphor. Some work well, some are obfuscating. I noticed my managers always use tech jargon against me to prove their intelligence to guard against my petulant simplicity. Especially the vague stuff: “How dare you break complex problems down, we need you mystified. That way we do not have to give you a bonus, a promotion or a raise. Stay in your corner you programming simpleton.”
It’s not always me that must be dumb. So sometimes it’s just the poor metaphors… Unless they’re tightly explained, then we can think of a better one; or drop it.
I like the elegance of saving the candy 
from getting stuck.
Thank you. 