proposal-array-from-async icon indicating copy to clipboard operation
proposal-array-from-async copied to clipboard

Redefine fromAsync as “built-in async function”

Open js-choi opened this issue 2 years ago • 1 comments

After #36 was merged, Array.fromAsync spec now depends on tc39/ecma262#2942, just like proposal-async-iterator-helpers.

@bakkot points out that the current spec uses AsyncFunctionStart directly rather than defining Async.fromAsync as a “built-in async function”, which is a new concept defined by tc39/ecma262#2942. (The current spec version still does require tc39/ecma262#2942’s enhancement of AsyncFunctionStart.

We probably should define Async.fromAsync as a “built-in async function object”.

Note that https://github.com/tc39/ecma262/pull/2942#issuecomment-1515412109 suggests that the final form of tc39/ecma262#2942 might still not be completely settled.

js-choi avatar Nov 01 '23 22:11 js-choi

As far as I can tell, all this change requires is removing steps 1, 2, 3, 4, and 5, replacing them all with the sub-steps of step 3. tc39/ecma262 seems to cause Array.fromAsync to implicitly be defined as a built-in async function object, whose [[Call]] method automatically creates a PromiseCapability and Abstract Closure, performs AsyncFunctionStart on them, and returns the resulting promise from PromiseCapability.

I will make a pull request for these changes after #44 is reviewed and merged.

js-choi avatar Dec 02 '23 19:12 js-choi