This blog post is not great. It's also not about scaling at all.<p>For one thing, a promises based async implementation is not incredibly helpful when you have a strictly one-after-another ordering of data dependencies.<p>In the interest of comparison, however, I decided to translate the example code to the equivalent synchronous and asynchronous Clojure code.<p><a href="https://www.refheap.com/20640" rel="nofollow">https://www.refheap.com/20640</a><p>Things to note:<p>Instead of being forced to use a compiler-assisted construct, promises on Clojure get dereferenced. Dereferencing is the same operation used to get the value of agents, atoms, and refs as well.<p>Deref'ing (@) a promise over and over is totally okay.<p>Using promises doesn't make the Scala solution meaningfully or usefully asynchronous unless the handler is yielding its thread while blocking on I/O.