Because, despite our papering over of some of it's warts, JS is still fundamentally a pretty terrible language; and rather than everyone trying to make it be better, shouldn't we devote time and hardware efforts like this to either language agnostic improvements, or to languages that are better designed?
> Well, it's not terrible nor worse than other dynamically-typed programming languages.
Not better or worse? It's got a type system with holes you could drive truck through, and more arcane edge-cases than a fantasy book of spells.
> And it's one of the few languages with async-everything.
Just because something is async doesn't make it better or faster, at some point the work has to be done, and for those cases where async does make a difference, pretty much every other language has an async implementation that is either just as good or superior.
> Let's not exaggerate nor underestimate the fool's errand of replacing a ubiquitous language.
Yeah, I think that horse has bolted, but we can stop making it anymore widespread than it absolutely needs to be.
I agree about the type system, but as far as async is concerned, javascript with its (now standardized) promises is miles ahead. The main advantage IMO is not to gain performance, but to allow concurrency without data races (as required by a GUI that needs to wait for a server). If you try async programming in C++ or Python you'll quickly discover that half of the libraries are pre-async and block, and you'll have to resort to threads and still worry about data races.
Python has easy-to-use shared-nothing message passing concurrency libraries based on threading, so no, you don’t have to worry about data races any more than you do with JS.
> a type system with holes you could drive truck through
That's most dynamic languages. (Python is a bit more strong than others, sure, but whatever.)
> pretty much every other language has an async implementation that is either just as good or superior
Most other languages have async bolted on and a lot of existing libraries are synchronous. Pretty much all JS embeddings (both the browser and various server side things) exposed everything as asynchronous from the beginning using callbacks — and now callbacks easily get wrapped into promises and async/await works with them very well.