This handles blocking the caller thread, setting up the coroutine scope for work, and waiting for the final frame to render. Also add a new simple example (although it's partially broken since the final frame is missing).