refactor poll_until
to only ever call wasm inside a fiber
#13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With
wasmtime
'sasync
support enabled, all guest export calls need to happen in a fiber because the guest may call back to the host, which may try to suspend the fiber and return control to the top-level async executor. In fact, even if the guest doesn't call back to the host, epoch interruption might be enabled, in which case the code might be instrumented with yield calls that do the same thing.In the process of this refactor, I discovered a couple of other issues (e.g. not removing tasks from the "yielding" set when disposing of them) and fixed those as well.
Fixes #9.