Helper pack for core.async with focus on error propagation, see docs for more and examples.
Add the following dependency to your project.clj
:
Pay attention mixing up error propagation functions of this library and clojure.core.async functions. clojure.core.async function do not propagate errors. E.g. using a core.async go-block within a error propagation go-block stack will break error propagation. So do not mix it up!
(ns your-project
#?(:clj
(:require
[clojure.core.async :refer [timeout]]
[jtk-dvlp.async :as a])
:cljs
(:require
[cljs.core.async :refer [timeout]]
[jtk-dvlp.async :as a]))
#?(:clj
(:import
[clojure.lang ExceptionInfo]))
,,,)
(defn <do-some-async-stuff
[& args]
(a/go
(a/<! (timeout 1000))
(let [result
{:call-args args}]
(println result)
result)))
(defn <fail-during-some-async-stuff
[& args]
(a/go
(a/<! (timeout 1000))
(->> {:call-args args}
(ex-info "you got a bug")
(throw))))
(comment
(a/go
(try
(let [a
(a/<! (<do-some-async-stuff :a))
b
(a/<! (<fail-during-some-async-stuff :b))
c
(a/<! (<do-some-async-stuff :c))]
(println [a b c]))
(catch ExceptionInfo e
(println "there is an error" e))))
,,,)
I´d be thankful to receive patches, comments and constructive criticism.
Hope the package is useful :-)
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close