<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [ESNext] Async iteration - Implement Async Generator"
   href="https://bugs.webkit.org/show_bug.cgi?id=166695#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [ESNext] Async iteration - Implement Async Generator"
   href="https://bugs.webkit.org/show_bug.cgi?id=166695">bug 166695</a>
              from <span class="vcard"><a class="email" href="mailto:gskachkov&#64;gmail.com" title="GSkachkov &lt;gskachkov&#64;gmail.com&gt;"> <span class="fn">GSkachkov</span></a>
</span></b>
        <pre>Comment on <span class=""><a href="attachment.cgi?id=298142&amp;action=diff" name="attach_298142" title="Patch">attachment 298142</a> <a href="attachment.cgi?id=298142&amp;action=edit" title="Patch">[details]</a></span>
Patch

View in context: <a href="https://bugs.webkit.org/attachment.cgi?id=298142&amp;action=review">https://bugs.webkit.org/attachment.cgi?id=298142&amp;action=review</a>

<span class="quote">&gt;&gt; Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js:39
&gt;&gt; +        &#64;throwTypeError(&quot;Async generator is executing&quot;);
&gt; 
&gt; Async Generators differ from ordinary generators, in that it's not an error to resume the generator while it's executing.
&gt; 
&gt; While it's an unlikely case, the generator is allowed to queue up additional requests while executing, and the queue of requests is drained during resumption (the proposal words this as recursive calls from AsyncGeneratorResolve / AsyncGeneratorReject -&gt; AsyncGeneratorResumeNext)</span >

Sure I'll remove this line.
I've tried to replace queue by chain of promises to allow invoke 'next' many times as well. Also I have not implement&amp;tests methods 'return' &amp; 'throw', not sure that they work correct in this patch.

<span class="quote">&gt;&gt; Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js:65
&gt;&gt; +    if (generator.&#64;asyncGeneratorState === &#64;AsyncGeneratorStateAwait) {
&gt; 
&gt; the special generator continuation is a nice idea.
&gt; 
&gt; Though it doesn't affect JSC just yet due to not being implemented, note that this would _probably_ be observable via the function.sent metaproperty (or at least, it is in the v8 generator implementation without some additional work).</span >

Oh Sorry, not sure that I got it. 
Do you mean that in case of using chain of promises instead of queue, we will have visible side effects when function.sent would be implemented?
Could you please provide some examples that you faced in v8? I'll try to emulate on current solution, possible current approach is not viable at all.

Also it seems that I need to replace this by: 

        let wrappedValue = &#64;newPromiseCapability(&#64;Promise);
        wrappedValue.&#64;resolve.&#64;call(&#64;undefined, value);
        wrappedValue.&#64;promise.&#64;then(
                                    function(result) { &#64;asyncGeneratorResume(generator, promiseCapability, result, &#64;GeneratorResumeModeNormal); },
                                    function(error) { &#64;asyncGeneratorResume(generator, promiseCapability, error, &#64;GeneratorResumeModeThrow); });
Because value is returned by await can be non promise value.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>