   ([mocks m]
    (mock-execute-monad (monad/null-monad-command-config {} {}) mocks m))
   ([command-config mocks m]
-   (try (monad/run-free-reader-state-exception
-         (monad/combine-monad-command-configs command-config
-                                              (mock-commands mocks))
-         (monad/monadic
-          [res m]
-          ;; check that mock stack is empty at 'end'
-          check-mocks-empty
-          (monad/return res)))
-        #?(:clj (catch Exception e
-                  (println "e =" e))
-           :cljs (catch js/Error e
-                   (println "e =" e))))))
+   (monad/run-free-reader-state-exception
+    (monad/combine-monad-command-configs command-config
+                                         (mock-commands mocks))
+    (monad/monadic
+     [res m]
+     ;; check that mock stack is empty at 'end'
+     check-mocks-empty
+     (monad/return res)))))
 
 ;; FIXME This should be renamed to `mock-execute-monad`
 (defn mock-run-monad

   (if-cljs
    ;; We must be careful here to call the function version in CLJS
    ;; (otherwise, it expands to clojure.test/is and not cljs.test/is)
     (monad/return (is (empty? rmocks) "Did not see expected mocked commands."))
     (m-is (empty? rmocks) "Did not see expected mocked commands."))
    (monad/return nil)))

(defn mock-effect

   `mocks` should be a sequence, whose values can be created by the
  `mock`, `mock-result` or `mock-effect` and other functions above, and are
  expected to appear in that order while executing `m`."
  ([mocks m]
   (mock-run-monad (monad/null-monad-command-config {} {}) mocks m))
  ([command-config mocks m]
   (first (mock-execute-monad command-config mocks m))))

(defn with-mock-run-monad
  "Immediately calls f with a function of two arguments, `mocks` and
