Resuming a coroutine via resume, operator(), or destroy
on an execution agent other than the one on which it was suspended
has implementation-defined behavior unless
each execution agent either is
an instance of std::thread or std::jthread,
or is the thread that executes main.
A coroutine that is resumed on a different execution agent should
avoid relying on consistent thread identity throughout, such as holding
a mutex object across a suspend point.