Class RewriteAsyncIteration

java.lang.Object
com.google.javascript.jscomp.RewriteAsyncIteration
All Implemented Interfaces:
CompilerPass, NodeTraversal.Callback

public final class RewriteAsyncIteration extends Object implements NodeTraversal.Callback, CompilerPass
Converts async generator functions into a function returning a new $jscomp.AsyncGenWrapper around the original block and awaits/yields converted to yields of ActionRecords.

 async function* foo() {
   let res = await myPromise;
   yield res + 1;
 }
 

becomes (prefixes trimmed for clarity)


 function foo() {
   return new $jscomp.AsyncGeneratorWrapper((function*(){
     let res = yield new $ActionRecord($ActionEnum.AWAIT_VALUE, myPromise);
     yield new $ActionRecord($ActionEnum.YIELD_VALUE, res + 1);
   })());
 }