 
     (receive dval2 (fn [_ val _] (reset! res val)))
     (is (nil? @res))))
+
+(deftest catching-objects-does-nothing
+  (let [res (atom nil)]
+    (catch :hello Exception #(reset! res %))
+    (is (nil? @res))
+    (catch nil Exception #(reset! res %))
+    (is (nil? @res))))
+
+(deftest calling-finally-is-invoked
+  (let [res (atom nil)]
+    (finally :hello #(reset! res :one))
+    (is (= :one @res))
+
+    (finally nil #(reset! res :two))
+    (is (= :two @res))))
 
 (deftest waiting-for-objects
   (let [dval1 :hello

    (is (wait dval))
    (is (= :hello @res))))

(deftest calling-wait-when-already-realized
  (let [dval (deferred)
        res  (atom nil)]
    (put dval :hello)
    (receive dval (fn [_ val _] (reset! res val)))
    (is (= true (wait dval)))))

(deftest wait-call-times-out
  (let [dval   (deferred)

(deftest calling-wait
  (let [dval (deferred)
        res  (atom nil)]
    (future
      (Thread/sleep 20)
      (put dval :hello))
