One thing I've noticed with my own Clojure service at scale, is that eventually, I want to significantly reduce my use of futures entirely.<p>When you're getting started with Clojure, it's easy to do everything that needs to happen "later" or "in the background" as a future. Once you go to production, you realize that about half of those futures should have been jobs going into a queue somewhere, with logging and guaranteed delivery, retrying on another machine, if necessary.<p>I haven't gotten to the point of writing that library, but I probably will, soon.