Jeswin Kumar (2014-09-11T09:45:43.000Z)
domenic at domenicdenicola.com (2014-09-17T22:12:40.469Z)
Looking at my project (in which asynchronous calls are entirely done via generators), I can't see how async/await would simplify code for end-users like me (application programmers). End users write the spawn()/Q.async()/co() wrapper *at most* one single time in an application: 1. When using a framework like say koajs, you don't have to write it even once. 2. While not using a framework, you'd have to use the wrapper one single time in say, the main.js file. To use the example at http://wiki.ecmascript.org/doku.php?id=strawman:async_functions ```js async function chainAnimationsAsync(elem, animations) { CODE; } ``` is just ```js function chainAnimationsAsync*(elem, animations) { same CODE; } ``` when flow control is done by a framework or at the entry point to your application. spawn() isn't needed. I can't see how this will reduce application's code even a little. So my question is, is async/await needed? One more question 1. yield is practically very difficult to use in a project because you don't get proper stack traces (at least with the current flow control libraries). You'd only see the last call which threw the error, and then functions from the flow control library immediately below that. I suppose the generators leading up to the erring generator are all suspended and wouldn't be on the stack frame chain. 2. yield\* generator delegation solves this problem, you get real stack traces. I was able to get full stack traces simply by replacing all yield X() with yield\* X() example code as in: https://github.com/chopachom/syncio So if there are valid use-cases for adding async/await to JS, shouldn't it be based on how yield\* works rather than yield?