But the problem is that the Node.js backend code is not very easy to read if you just use Promise. I usually need to use async/await to make to code more imperative.
So... write it with async/await and be happy? :) You aren't required to use promises in JS, use whatever coding style suits your team and your purpose.
If you just want type safety, use one of the many static-typed options that transpile to JS .
If you don't want to write JS at all, then don't... as Mark points out you can write async code in other languages.