Of course, I have alternatives.
Let’s first identify the “good parts” of JS. These include first-class functions and closures, object-orientation (via prototypes), and dynamic typing. Everything else you can name (like async callbacks and method chaining) stems from these things. There are no other “good parts.”
Smalltalk has these things, too. Smalltalk doesn’t have object prototypes, but outside of JS nobody wants prototypes. Everybody wants traditional OOP with classes. Smalltalk is the consummate OOP language.
Smalltalk is one of the smallest, simplest, and most elegant programming languages in the world. JS pales by comparison.
Ruby is another language that has all of these things. Python, too. Come to think of it, so does Dart.