🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket
Back

Security News

TC39 Advances Array.fromAsync, Error.isError, and Explicit Resource Management to Stage 4

TC39 advances 9 JavaScript proposals, including Array.fromAsync, Error.isError, and Explicit Resource Management, which are now headed into the ECMAScript spec.

TC39 Advances Array.fromAsync, Error.isError, and Explicit Resource Management to Stage 4

Sarah Gooding

June 2, 2025

The 108th TC39 meeting took place last week in A Coruña, Spain, hosted by Igalia. Nine JavaScript proposals advanced during the meeting, and four are moving to Stage 4. Array.fromAsync, Error.isError, and the new using declaration for explicit resource management are now headed into the ECMAScript specification.

Here’s a quick look at what’s next for the language.

Array.fromAsync to Stage 4#

Array.fromAsync, a long-awaited utility for collecting async iterables into arrays, has conditionally advanced to Stage 4. Championed by J. S. Choi, it works like Array.from but for async data sources, eliminating the need for manual for await...of loops. Popularized in userland via libraries like it-all, the proposal now set to become a native part of JavaScript, pending final editor sign-off.

Error.isError to Stage 4#

Error.isError, a new built-in method for reliably detecting error objects, has advanced to Stage 4, championed by Jordan Harband. It provides a standardized way to check whether a given value is an instance of an error, resolving long-standing inconsistencies with cross-realm and custom error detection. The method already exists as a polyfill (error.iserror on npm), and the proposal will now become a native part of JavaScript.

Explicit Resource Management: `using` to Stage 4#

The Explicit Resource Management proposal, championed by Ron Buckton, has conditionally advanced to Stage 4. The proposal introduces using and await using declarations along with Symbol.dispose and Symbol.asyncDispose, enabling deterministic cleanup of resources like file handles, streams, and locks.

By mirroring patterns from languages like C#, Python, and Java, this addition makes structured resource management more ergonomic and less error-prone in both sync and async JavaScript code. Final advancement is pending review of tests and editor approval.

More Advancements Across the Proposal Pipeline#

In addition to the three proposals advancing to the specification, TC39 moved forward six others: Immutable ArrayBuffer reached Stage 3, bringing a new primitive for safely sharing binary data across threads. Advancing to Stage 2 were Math.clamp and a Seeded Pseudo Random Numbers, both offering improved math capabilities and greater reproducibility.

Meanwhile, Keep Trailing Zeros, Inspector (originally part of the Comparisons proposal), and Random Functions entered Stage 1, beginning their journey through the standardization process.

The full agenda from the meeting is available here. TC39 plans to publish the official notes in approximately three weeks.

Subscribe to our newsletter

Get notified when we publish new security blog posts!

Try it now

Ready to block malicious and vulnerable dependencies?

Install GitHub AppBook a Demo

Related posts

Back to all posts