https://dzone.com/articles/javascript-callback-hell-solved
https://www.sitepoint.com/saved-from-callback-hell
https://medium.com/@sagish/node-with-benefits-using-coffeescript-in-your-stack-e9754bf58668
http://www.youtube.com/watch?v=hf1T_AONQJU
http://callbackhell.com
http://elm-lang.org/learn/Escape-from-Callback-Hell.elm
https://groups.google.com/forum/#!topic/nodejs/AiBJFuBMPls%5B1-25-false%5D
http://stackoverflow.com/questions/18095107/callback-hell-in-nodejs
https://coderwall.com/p/ineqig
http://bryangilbert.com/code/2013/07/19/escaping-callback-hell-with-core-async/
http://java.dzone.com/articles/callback-hell
http://blog.caplin.com/2013/03/13/callback-hell-is-a-design-choice/
http://ianbishop.github.io/blog/2013/01/13/escape-from-callback-hell/
Play and Scala offer powerful abstractions to make it easy to write clean and performant async code that is easy to reason about (for the record, libraries like async and jQuery's deferred bring some of these features to JavaScript as well). See http://engineering.linkedin.com/play/play-framework-async-io-without-thread-pool-and-callback-hell