Proposal for Promise.prototype.flatten

Aaron Silvas aaronsilvas at gmail.com
Tue Apr 23 20:24:52 UTC 2019


https://github.com/asilvas/proposal-promise-flatten

Looking for interest, and TC39 champion.

The basic idea is to provide a simpler, more consistent interface, and
easier to read code over using try/catches for async code paths. Regardless
of which errors are handled or ignored, it's treated as nothing more than
another input in the result, not all that dissimilar to callbacks.

async function test(promise1, promise2, promise3) {
  const [, val1] = await promise1.flatten(); // ignore exceptions
  const [err, [val2, val3] = []] = await Promise.all([promise2,
promise3]).flatten();

  if (err) throw err; // throw to caller

  return val1 + val2 + val3;
}


Original topic that spurred interest in this pattern:
https://twitter.com/DavidWells/status/1119729914876284928

Spec discussions:
https://twitter.com/Aaron_Silvas/status/1120721934730137601


Thanks,

Aaron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190423/82b3acc8/attachment.html>


More information about the es-discuss mailing list