https://github.com/aardappel/goose/blob/master/docs/design/coroutines.md describes one way coroutines could be introduced to the Goose language. Although it is compelling, some aspects of it seemed open to improvement.
The original design uses shared Wait/Event enums as the coroutine-scheduler protocol. This proposal replaces them with named resume conditions — typed