The coroutine package provides a suspendable
Coroutine is similar to a
Function, except that it can also yield
values at different points along its lifetime. Every
Coroutine has a
callstack that belongs to it, as well as an exception state. A
status can be discovered by one of the is_ methods.