This seems to provide the essential features of a CLU iterator. The language Io uses continuations, together with a goto which passes parameters, as the sole control structure. On call, it takes a snapshot of the current environment, and places it into data structure Buf. Exceptions have simplicity of expression, address a common problem, and are easy to understand and to implement. Coroutines are not easy to reason about, compared to functions., and they require that each object has its own stack, making implementations more complex.
Continuations are powerful and elegant, but very confusing to use.