   (testing (format "%s throws exceptions when tasks are sent to a shutdown pool"
                    fn-name)
     (check-shutdown-exceptions pmap-like))
-  (testing (format "%s can be chained in various threadpools" fn-name)
-    (check-chaining pmap-like)))
+  (when lazy?
+    (testing (format "%s can be chained in various threadpools" fn-name)
+             (check-chaining pmap-like))
+    (testing (format "%s stops processing when an exception occurs" fn-name)
+             (check-shuts-off pmap-like))))
 
 
 (deftest test-future

          (when should-we-shutdown?
            (cp/shutdown! @apool)))))))

(defn check-all
  "Run all checks on a pmap function."
  [fn-name pmap-like ordered?]
  (testing (format "%s runs n things at once" fn-name)
    (check-parallel pmap-like ordered?))
  (testing (format "%s emits exceptions correctly" fn-name)

                               input)]
        ;; All tasks should have started after 100ms.
        (Thread/sleep 100)
        (is (= (set @started) (set input)))
        ;; Each task should be started only once.
        (is (= @started (distinct @started)))
        ;; Start the first task.
        (deliver (first promise-chain) nil)
        ;; Tasks should complete in numerical order, the opposite of the order
