In praise of callbacks
gist.github.com
gist.github.com
You can also name your functions so you can have a better idea right away what that piece of code would do without having to follow the call chain, and then just pass the function name as the callback. You could use function names with promises too, but at that point why not dump that extra boilerplate code and use callbacks?