                               :on-dispose #(reset! disposed-c true))
           res (rv/atom nil)
           cns (rv/make-reaction #(reset! res @c)
-                                :auto-run true
+                                :auto-run :async
                                 :on-dispose #(reset! disposed-cns true))]
-      @cns
+      (sync)
       (is (= @res 2))
       (is (= (+ 4 runs) (running)))
       (is (= @count-b 1))
       (reset! a -1)
+      (is (= @res 2))
+      (sync)
       (is (= @res 1))
       (is (= @disposed nil))
       (is (= @count-b 2))
       (is (= (+ 4 runs) (running)) "still running")
       (reset! a 2)
+      (sync)
       (is (= @res 1))
       (is (= @disposed true))
       (is (= (+ 2 runs) (running)) "less running count")
 
       (reset! disposed nil)
       (reset! a -1)
+      (sync)
       ;; This fails sometimes on node. I have no idea why.
       (is (= 1 @res) "should be one again")
       (is (= @disposed nil))
       (reset! a 2)
+      (sync)
       (is (= @res 1))
       (is (= @disposed true))
       (dispose cns)

      (is (= runs (running))))))

(deftest test-on-set
  (let [runs (running)
        a (rv/atom 0)
        b (rv/make-reaction #(+ 5 @a)
                            :auto-run true
                            :on-set (fn [oldv newv]
                                      (reset! a (+ 10 newv))))]
    @b
    (is (= 5 @b))
    (reset! a 1)
    (is (= 6 @b))
    (reset! b 1)
    (is (= 11 @a))
    (is (= 16 @b))
    (dispose b)

      (is (= runs (running))))))

(deftest maybe-broken
  (sync)
  (let [runs (running)]
    (let [runs (running)
          a (rv/atom 0)
