1. A computer-readable memory storing computer-executable instructions for causing a computer to perform operations comprising: receiving a request from an originating routine to execute a coroutine; executing an initial portion of the coroutine on an initial thread; receiving a response back from the coroutine when the coroutine returns based upon a return statement, wherein the return statement identifies a subsequent thread different than the initial thread; and executing a subsequent portion of the coroutine a subsequent time on the subsequent thread that was indicated by the coroutine in the return statement upon return.