(defn
run-in-reaction
[f obj key run opts]
(let
[r temp-reaction res (deref-capture f r)]
(when-not
(nil? (.-watching r))
(set! temp-reaction (make-reaction nil))
(._set-opts r opts)
(set! (.-f r) f)
(set! (.-auto-run r) (fn* [] (run obj)))
(aset obj key r))
res))