- execution_context does not track parent
- execution_context calls std::terminate() if execption is thrown
- coroutine has to catch exception and store it in exception_ptr to
rethrow it
- if the coroutine-fn terminates/finishes we have to explicitly jump
back to the caller
- othwerwise the execution_context gets deconstructed, thus the
coroutine will be destructed too early