Hi guys! I need to do some i/o computation in a ring middleware. I'm wondering if this example is correct:
(defn ?task [req] (m/via m/blk ...))
(defn my-middleware
[handler]
(fn [request respond raise]
(let [run-task (?task req)]
(run-task
(fn [result]
(handler request respond raise))
(fn [_] ...)it looks correct to me, but it's a highway to callback-hell
(defn handler-task [handler request]
(fn [s f]
(handler request s f)
(fn [])))
(defn task-handler [f & args]
(fn [request respond raise]
((apply f request args) respond raise)))
(defn my-middleware [handler]
(task-handler
(fn [request]
(m/sp
(m/? (?task request))
(m/? (handler-task handler request))))))Thank leo