     (let [metrics-service (fault/service 1 1)
           latch (CountDownLatch. 1)]
       (service/open-circuit! metrics-service)
-      @(service/submit-action metrics-service (fn [] 1) Long/MAX_VALUE)
+      @(service/submit-action metrics-service (success-fn 1) Long/MAX_VALUE)
       (is (= 1 (-> metrics-service :metrics :circuit-open)))
       (service/close-circuit! metrics-service)
 
-      (service/submit-action metrics-service (fn [] (.await latch)) Long/MAX_VALUE)
-      (service/submit-action metrics-service (fn [] 1) Long/MAX_VALUE)
+      (service/submit-action metrics-service (block-fn 1 latch) Long/MAX_VALUE)
+      (service/submit-action metrics-service (success-fn 1) Long/MAX_VALUE)
       (.countDown latch)
       (is (= 1 (-> metrics-service :metrics :max-concurrency-level-exceeded)))
       (service/shutdown metrics-service))))
  (testing "Testing that metrics are updated with result of action"
    (let [metrics-service (fault/service 1 100)
          latch (CountDownLatch. 1)]
      @(service/submit-action metrics-service (fn [] 1) Long/MAX_VALUE)
      @(service/submit-action metrics-service (fn [] (throw (IOException.))) Long/MAX_VALUE)
      @(service/submit-action metrics-service (fn [] (.await latch)) 10)
      (.countDown latch)
      (is (= 1 (-> metrics-service :metrics :successes)))
      (is (= 1 (-> metrics-service :metrics :time-outs)))

      (is (nil? (:error f)))))
  (testing "Submitted action can return error"
    (let [exception (IOException.)
          f (service/submit-action service (error-fn exception) 10000)]
      (is (= exception @f))
      (is (= exception (:error f)))
      (is (nil? (:result f)))
      (is (= :error (:status f)))))
  (testing "Submitted action can timeout"
    (let [latch (CountDownLatch. 1)
          f (service/submit-action service (block-fn 1 latch) 50)]
      (is (= :timed-out @f))
      (is (= :timed-out (:status f)))
      (.countDown latch)
