"but Node.js itself is based around async callbacks for the simplest stuff with no easy way out, which makes it worth avoiding".
Huh? Async code is so powerful. You can use promises instead of callbacks. And you can easily make a async call "synchronous" by adding the await keyword in front of it.