Future failure in Clojure <p>In Scala a future can fail and this can be found out asynchronously:</p> <pre><code>f onComplete { case Success(_) =&gt; println("Great!") case Failure(t) =&gt; println("An error has occurred: " + t.getMessage) } </code></pre> <p>How would you 'translate' this into Clojure? My reading leads me to believe that the Clojure future/promise model is not as powerful as Scala's, and you can't just catch the failure like this. So what to do instead? </p> <p>A Scala future never needs to be asked for it's value - when it is good and ready it will tell you what happened (including whether it failed - that's the crux of this question). This is what I meant by 'asynchronously'. A Scala future can be in one of three possible states - uncompleted, completed with failure, completed with success.</p> <p>A typical example of a use case in Scala is a remote call that returns a Future[T], where T is the type of what you really want to get back. If the remote JVM is down then after a timeout the <code>case Failure(t)</code> will happen.</p> <p>This is quite a straightforward model to work with. In the question I was asking for a simple alternative. As a side-comment it would be good to hear that Clojure intends to adopt the Scala Futures model at some point.</p>