<div dir="ltr"><div>>  <span style="font-size:13.333333969116211px;font-family:arial,sans-serif">Still, my point stands: you are not using task.js-like scheduler/combinator approach for an apples-to-apples comparison with await. If you do, then we're down to the obligation of a task.js download, and some syntactic sugar.</span></div>

<div><span style="font-size:13.333333969116211px;font-family:arial,sans-serif"><br></span>see comments in gist, adding a library also has some stuff with source maps that I am not too keen on in particular. I can use libraries to simplify many things / manage code, but doing similar tasks without using a library seems more in line w/ my original question (which has been answered). Either way, for now it seems like generator-iterators won't have references to themselves and I can just wrap it.</div>

<div><br></div><div>Allan: an interesting idea that does simplify things, updating gist. Still using a wrapper since even w/ new the generator returns a generator instance (otherwise I could use instanceof checks).</div>
<div>
<br></div><div>Note: cleaned up gist somewhat in general / simplified</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jan 23, 2014 at 6:43 PM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">Bradley Meck wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Is that true even though then should fire after the generator unwinds its stack?<br>
</blockquote>
<br></div>
True if .then always runs in a later turn -- sorry.<br>
<br>
Still, my point stands: you are not using task.js-like scheduler/combinator approach for an apples-to-apples comparison with await. If you do, then we're down to the obligation of a task.js download, and some syntactic sugar.<br>


<br>
// assume req in scope<br>
spawn(function*()  {<br>
  try  {<br>
    var  session  =  yieldlogin(req);  // wait until the promise resolves<br>
    gotoProfile(session);<br>
  }<br>
  catch  (e)  {<br>
    printError(e);<br>
    gotoLogin();<br>
  }<br>
  // implicit return undefined<br>
});<br>
<br>
BTW, in ES7, no "use await"; will be needed ;-).<br>
<br>
If you want to control when the task starts, you'd use new Task. If you want to send req, you'd control starting via t = new Task(function*(){...}) and call t.next(req). Hope this is all clear from <a href="http://taskjs.org/" target="_blank">http://taskjs.org/</a> and the code.<div class="im">

<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am using regenerator right now while playing with this stuff.<br>
</blockquote>
<br></div>
Cool -- can you try task.js?<span class="HOEnZb"><font color="#888888"><br>
<br>
/be<br>
</font></span></blockquote></div><br></div>