Destructor. Destroys the coroutine, if it holds a valid one.
~coro();
This does not cancel an active coroutine. Destructing a resumable coroutine, i.e. one with a call to async_resume that has not completed, is undefined behaviour.