tc39 / proposal-array-from-async

Draft specification for a proposed Array.fromAsync method in JavaScript.
http://tc39.es/proposal-array-from-async/
BSD 3-Clause "New" or "Revised" License
177 stars 13 forks source link

Redefine fromAsync as “built-in async function” #43

Open js-choi opened 10 months ago

js-choi commented 10 months ago

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 commented 9 months ago

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.