I really like this. This feels like what the native APIs would look like if Promises existed in the 90s. One thing that might be improved is removing the `Promise.resolve()` that `yieldOrContinue` returns when it is not time to yield. Awaiting non-Promises is totally fine: you just get that value back (the `await` does nothing). Avoiding constructing a resolved promise can help reduce the number of objects that get a…
A little thing but a great improvement. I'm now wondering why I did that.