async/await improvements

Jeff Morrison lbljeffmo at
Wed Nov 12 14:15:34 PST 2014

On 11/12/14, 4:10 PM, Kevin Smith wrote:
>     The only thing they couldn't do (under this proposal) is expose
>     the promise being used to userland (to eliminate the chance for
>     userland to hold on to the promise and expect to be able to add an
>     error handler at any time).
> And lose the ability to combine the results of async functions with 
> "all", "race", and any other promise combinator?  That's a core 
> strength of the current design.
A very good point.

Crazy, half-baked idea: Move the "forwards" vs "throws/logs" distinction 
to the callsite (in sync contexts only?) rather than the definition 
context as was described at the beginning of this thread.

The thought-process running along the lines of making the default 
behavior to log/report, but with an escape hatch when logging is *not* 
what you want.
It's easier to notice an undesired log (and suppress it if necessary) 
than it is to notice that a log is *missing* in exceptional circumstances.

async function asyncLibrary(data) {
   // ...

function doStuff() {
   // Becomes sugar for something like
   // asyncLibrary(badData).catch(err => {
   //   console.error(err);
   //   throw err;
   // });
   // This makes logging-to-console the default
   var toplevelResult = asyncLibrary(badData);

   // No additional .catch() -- just pushes new syntax to discourage
   // swallowed-by-default. When you want this "storing" behavior, you 
   // opt-in to it via syntax (or a stdlib?) rather than opting out
   var storedResult = ^asyncLibrary(badData);

   // For combinators, you get something like:

async function doOtherAsyncStuff() {
   // This stays status quo
   try {
   } catch (e) {
     // caught!

(Frankly the `^` syntax I used here seems a bit arcane to me -- but 
maybe someone can see through it and can think of a more expressive syntax?)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list