> Callbacks allow await/defer in Iced CoffeeScript
Not the same thing as in ES6, also that project is totally dead.
> generally devs just end up creating long chains of anonymous functions rather than long nests of anonymous functions
Not true in my experience, also not required at all when using async / await.
> Promises actually discourage flat code (and functional programming) for that reason.
This is really not true, Promises are functional and composable, callbacks are imperative.
> I understand they seem attractive but become a hack in complex situations.
Just no. Callbacks lead to terrible "solutions" like caolan/async, callbacks make refactoring extremely awkward.
Callbacks don't even get to claim better performance, because they require a load of internal hacks in node/io.js to maintain state.
With async/await in the picture, callbacks so totally inferior I can't believe someone would attempt to argue otherwise.