Async functions not friendly to promise extensions

Matthias welp boekewurm at gmail.com
Fri Apr 14 10:17:22 UTC 2017


resend/fwd of accidental personal reply


Hello Medikoo,

You seem to misunderstand what async functions do to be async. Your
function has the same product as the following:

new Promise((acc, rej) => acc(extendedPromise))

A promise that resolves to a extendedPromise instance. By no means do async
functions use the returned values as their way of determining what type of
promise they are: that'd break when using multiple returns with different
types.

I hope this explains it a bit for you.

-Matthias

On 14 Apr 2017 09:58, "medikoo" <medikoo+mozilla.org at medikoo.com> wrote:

While Promise methods and functions are friendly for it's extensions (or
even not direct extensions but just thenables), the async function will
always normalize it's result to instance of Promise, even it's
ExtendedPromise, e.g.: class ExtendedPromise extends Promise {}; var
extendedPromise = new ExtendedPromise(function (resolve) { resolve(); });
extendedPromise.then().constructor === ExtendedPromise // true var asyncFn
= async function () { return extendedPromise; }; asyncFn().constructor ===
ExtendedPromise // false asyncFn().constructor === Promise // true That
makes it cumbersome if we work with promise extensions. What was the
reasoning behind such design? If not thenables in general, the promise
extensions I believe should be passed through (or copied via its
constructor.resolve).
------------------------------
View this message in context: Async functions not friendly to promise
extensions
<http://mozilla.6506.n7.nabble.com/Async-functions-not-friendly-to-promise-extensions-tp364921.html>
Sent from the Mozilla - ECMAScript 4 discussion mailing list archive
<http://mozilla.6506.n7.nabble.com/Mozilla-ECMAScript-4-discussion-f89340.html>
at Nabble.com.

_______________________________________________
es-discuss mailing list
es-discuss at mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170414/926dca1f/attachment.html>


More information about the es-discuss mailing list