The main drawback with this approach is that it is easy to blow the stack, but it is not too hard to implement trampolining on top of it (by yielding the continuation to a wrapper generator)
To use the generator I send its inputs using `.next()` and obtain current state information, as shown on your library webpage.
I created a JavaScript state machine library using them to define each state. https://github.com/JavaScriptRegenerated/yieldmachine
I imagine your approach must be different?