When/why is async good for performance?

Keep in mind that regular threads aren't all that portable as they definitely won't work on e.g. WebAssembly (which was a nasty surprise for me anyway).
Since Futures and JS Promises can seamlessly work together, for people who like or need their code to be easily portable, using Futures for concurrency is starting to look like a superior alternative in general, and the fact that Futures are lower overhead than regular threads only seals that fate.