Using only that, I rarely go over 80 character column limit that I impose on myself. There is absolutely zero callback spaghetti whether it's 2 or 25 functions deep in the chain.
Tbh, callback spaghetti only happens to newer async programmers in the same way that a newer programmer will write arrow code with if/else statements.
It's simply not a problem that needs to be addressed other than educating people who are new to node.js with some example tutorials that use an async helper library.