         dirty (if (nil? derefed) dirty clean)
         nocache (if (nil? no-cache) false no-cache)
         reaction (Reaction. f nil dirty nil nil
-                            runner on-set on-dispose false nocache)]
+                            runner on-set on-dispose nocache)]
     (when-not (nil? derefed)
       (-update-watching reaction derefed))
     reaction))

                      dirty)]
      (when (> new-dirty old-dirty)
        (set! dirtyness new-dirty)
        (if-some [arun auto-run]
          (when-not norun?
            (when-not (and (identical? arun run)
                           (-check-clean this))
              (arun this)))
          (-notify-watches this state state))))
    nil)

  (-update-watching [this derefed]


  (-check-clean [this]
    (when (== dirtyness maybe-dirty)
      (let [ar auto-run]
        ;; TODO: try/catch
        (set! auto-run nil)
        (doseq [w watching]
          (when (and (instance? Reaction w)
                     (not (-check-clean w)))
            (if-some [ar (.-auto-run w)]
              (ar w)
              (run w))))
        (set! auto-run ar))
      (when (== dirtyness maybe-dirty)
        (set! dirtyness clean)))
    (== dirtyness clean))
