I really like the ideas and design of castra. I was experimenting with using it on a personal project where I used reagent. Since nothing else in the project required jquery, I wondered if I could remove the dependency on jquery from the castra.cljs. Here's what I came up with. It uses goog.labs.net.xhr, goog.async.Deferred, and goog.Promise, instead of jquery deferred, async and promises .
I just took core.cljs from the castra project, copied and pasted and changed it to work. But with a little extra work, I think this could be tweaked so that jquery is optional (but still leave it as the default).
Maybe have two separate implementations of ajax-fn: a jquery-ajax-fn and a goog-ajax-fn or something along those lines.
At the moment, it's working as is for me, so I probably will just go with this hacky version. But if anyone else is interested, please let me know. I could try to spend some time cleaning it up and possibly opening a pull request to make jquery optional?