Agent2 release 0.2.1 now wraps exceptions passed as values in a vector marked with the metadata flag :wrapped. The request-call method can now distinguish between exceptions thrown by a request (and rethrows them) and exceptions used as responses (and unwraps them before returning them). https://github.com/laforge49/agent2/releases
I appreciate your advice Frances. Just too much for me to deal with all at one time, this being my first release to Clojars and all. On Friday, August 7, 2015 at 5:24:24 PM UTC-4, Francis Avila wrote: > > Huh, I was sure I had done this before, but I misremembered, I was using > my own promise that rethrew Throwable instances on deref (and it was in > clojurescript!) > > Clojure promises have no notion of failure, only realized/not-realized. > You need to deliver a sentinel type or value and check for it on deref, or > implement your own promise type which does it for you. (It's not that hard: > https://github.com/clojure/clojure/blob/clojure-1.7.0/src/clj/clojure/core.clj#L6803 > > ) > > On Friday, August 7, 2015 at 4:09:39 PM UTC-5, William la Forge wrote: >> >> Sorry, I meant to ask how to fail with a promise? It seems that there is >> no fail method. >> >> On Friday, August 7, 2015 at 4:52:47 PM UTC-4, Francis Avila wrote: >>> >>> Futures automatically capture exceptions raised in their bodies and >>> reraise them when the future is derefed. Promises also throw exceptions >>> when derefed. >>> >>> Unlike promises, futures are created with the code that delivers their >>> value, so calling fail and deliver explicitly on a future makes no sense. >>> >>> Think of futures as a thin wrapper around a promise which spawns a >>> thread, runs the code, and to the wrapped promise either delivers the >>> result of the code or calls (fail private-promise raised-exception) for you. >>> >>> On Friday, August 7, 2015 at 2:14:30 PM UTC-5, William la Forge wrote: >>>> >>>> A future fails when it throws an exception. How to do that with a >>>> future? >>>> >>>> It looks like (fail future exception) does not do the trick: >>>> http://dev.clojure.org/display/design/Promises >>>> >>>> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.