A robust static type system is what was missing for me, at least last time I looked.
It’s really hard to go back to living without this once you’re used to it.
For one, there's little ability to avoid message passing in our modern world. You can take it out of the language, but that just means pushing it to another abstraction (e.g. sockets), and all the same lack of type safety comes right back.