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: f will be called on the environment and the batch.

If no predicate is given f will be called on all deferred values.