<div dir="ltr">On Tue, Apr 23, 2013 at 12:12 AM, Andy Wingo <span dir="ltr"><<a href="mailto:wingo@igalia.com" target="_blank">wingo@igalia.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Tue 23 Apr 2013 01:31, "Tab Atkins Jr." <<a href="mailto:jackalmage@gmail.com">jackalmage@gmail.com</a>> writes:<br>

<br>
> On Mon, Apr 22, 2013 at 2:45 PM, Sam Tobin-Hochstadt <<a href="mailto:samth@ccs.neu.edu">samth@ccs.neu.edu</a>> wrote:<br>
>> What exactly would be the semantic difference between this and just using<br>
>> 'yield'?<br>
><br>
> The semantic difference is that 'yield' pauses your execution and<br>
> gives control to the calling code, while 'await' pauses your execution<br>
> and gives control to the promise.  Completely different direction of<br>
> control-passing.<br>
<br>
</div>It seems quite unlikely that modern JS implementations would implement<br>
`await' as you describe it.  It's relatively easy to suspend computation<br>
in one function frame, which is why we can have nice things like yield.<br>
Suspending multiple function activations is done in some language<br>
environments, but it would be difficult to retrofit into JS<br>
implementations, which is why we can't have nice things like await.<br></blockquote><div><br></div><div style>Hi Andy, look again at Domenic's gist at <<a href="https://gist.github.com/domenic/5428522">https://gist.github.com/domenic/5428522</a>> and the Q.async definition it uses at <<a href="http://wiki.ecmascript.org/doku.php?id=strawman:async_functions#reference_implementation">http://wiki.ecmascript.org/doku.php?id=strawman:async_functions#reference_implementation</a>>. I think the only proposed difference between "await" and "yield" is the name. The notion is that, when using ES6 generators and yield to get the effect associated with "await" in C#, he'd rather use the term "await" at the same time he's rather say "function^ ...." rather than "Q.async(function* ....". Other than these two simple local desugarings, "yield" and "await" are synonyms.</div>
<div><br></div><div style>The only issue at stake is whether the each bit of sugar is worth the cost. Fortunately, we'll gain experience with Domenic's middle pattern in ES6. In fact, we can start gaining experience with it today using Kris Kowal's Q on FF generators, which already work on ES5 on FF. Armed with this experience, we can then make an informed decision.</div>
<div style><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
My 2c.<br></blockquote><div><br></div><div style>FWIW, my 2c agrees with Sam on "await" vs "yield". If async functions are not common, then adding sugar for a small benefit isn't worth it. If async functions are common, then "yield" will come to be understood in the more general way that accounts both for their use in generators and their use in async functions. I doubt the "await" renaming is of adequate benefit to either scenario. People coming from C# can learn to say "yield" where they were used to saying "await".</div>
<div style><br></div><div style>On something like "function^ ...." vs "Q.async(function* ...." I am more undecided. If async functions are common enough, I can see this additional bit of sugar possibly being worth it. It would be like the difference between "function" and arrow functions all over again. But we lived with "function" functions for a long time without too much pain. Even if async functions become common, I am skeptical this additional sugaring is urgent. Let's give our experience of these more time to cook.</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span class=""><font color="#888888"><br>
Andy<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>    Cheers,<br>    --MarkM
</div></div>