async/await improvements

Tab Atkins Jr. jackalmage at
Wed Nov 12 15:58:39 PST 2014

On Wed, Nov 12, 2014 at 3:53 PM, James Long <longster at> wrote:
> On Wed, Nov 12, 2014 at 6:46 PM, Tab Atkins Jr. <jackalmage at> wrote:
>> On Wed, Nov 12, 2014 at 3:36 PM, James Long <longster at> wrote:
>>> `await` is *always* inside an `async` function so there's always a
>>> promise created for that function which is waiting for it to be done
>>> executing. That's the one I'm talking about.
>> Okay.  That doesn't change my response.  The outer async function also
>> returns a promise, and doesn't run syncly with *its* caller, so it's
>> again physically impossible for it to throw an error at its callsite
>> (again, unless *its* caller has opted into asynchrony and used
>> `await`).
> Yeah, I'm only talking about call sites that used `await`. Although,
> mainly the question is when an error happens inside an `async`
> function, whether it throws at that point or passes it onto the
> returning promise. You're definitely going to view that differently
> whether you embrace promises or not.

If both the outer and inner callsites used "await", and the innermost
callee returned a rejected promise, then the inner "await" will throw,
which causes its containing function to reject its promise, which
causes the outer "await" to throw (which then causes the outer
function to reject its promise).

I'm still confused about what you are confused about here.  You get
throws if you use `await`. You get rejected promises if you don't.
There's no two ways about it.


More information about the es-discuss mailing list