Skip to content

Check and emit fixes for async iteration #15277

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 19, 2017
Merged

Check and emit fixes for async iteration #15277

merged 2 commits into from
Apr 19, 2017

Conversation

rbuckton
Copy link
Contributor

@rbuckton rbuckton commented Apr 19, 2017

This changes the emit for the __asyncGenerator and __asyncDelegator helpers to fix issues with yield* delegation in an async generator. The main change involves modifying __asyncDelegator to use a two-phase approach to iteration:

  1. Return the iterator result of a next/throw/return to __asyncGenerator as if it were an await and switch phase. After awaiting the result, __asyncGenerator sends it back to the delegator via a call to its next method.
  2. Process and return the sent value and return an iterator result to __asyncGenerator either as a yield or a return and switch phase.

This also addresses a bug in the checker and correctly emits __asyncValues in some cases where it was missing.

This also addresses an issue where a Promise rejection during delegation of an async iterator was not properly handled.

Fixes: #15143, #14725, and #14442
Related: microsoft/tslib#29

rbuckton added a commit to microsoft/tslib that referenced this pull request Apr 19, 2017
@rbuckton
Copy link
Contributor Author

I will cherry-pick these changes into release-2.3 this evening.

@rbuckton rbuckton merged commit 6793466 into master Apr 19, 2017
aluanhaddad added a commit to aluanhaddad/tslib that referenced this pull request Aug 19, 2017
* Fix yield in async generator

* Update with changes from microsoft/TypeScript#15277

* Updated version to 1.6.1.

* Updated README.md to use latest version.

* Update async generator helpers to align with #15521

* Update README

* Update version to 1.7.0

* Update asyncDelegator for TS15862

* Update package version

* update jspm instructions 

This updates the jspm installation instructions to remove `npm:` registry prefix as it is no longer necessary as the package is now mapped in the jspm registry.

Additionally. the example `tsconfig.json` now reflects the path corresponding to the latest package version and uses the lowercase module kind name `"system"` to match the other example and to avoid warnings issued by VS Code when `"System"` is specified.
@rbuckton rbuckton deleted the fixAsynxIteration branch September 23, 2017 01:47
@microsoft microsoft locked and limited conversation to collaborators Jun 14, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Yield delegation inside for..await terminates iterable early
3 participants