claro.middleware.deferred
Generic middlewares to adjust the resolution deferred.
wrap-deferred
(wrap-deferred engine f)(wrap-deferred engine predicate f)Middleware that will call f on any batchwise-resolution deferred value, if the batch of Resolvable values matches predicate. For example, to set a timeout on Person batch resolution (assuming Manifold deferreds):
(def run-engine
(-> (engine/engine)
(wrap-deferred
#(instance? Person (first %))
(fn [env deferred]
(d/timeout! deferred (:timeout env 1000))))))
Note:
fwill be called on the environment and the batch.
If no predicate is given f will be called on all deferred values.