           (set! (.-reaction obj) r))
         v)
       (let [res (f)]
-        (when (some-> destroy .-destroy)
+        (when (some-> destroy .-destroy some?)
           (.destroy destroy))
         res))))
 

  IDeref
  (-deref [this]
    (-check-clean this)
    (if (and (nil? auto-run) (nil? *ratom-context*))
      (when-not (== dirtyness clean)
        (let [oldstate state
              newstate (f)]
          (set! state newstate)
          (when (and (some? watches)
                     (not= oldstate newstate))
            (-notify-watches this oldstate newstate))))
      (do
        (notify-deref-watcher! this)
        (when-not (== dirtyness clean)

                                     (dissoc cached-reactions key))
                               (when (some? obj)
                                 (set! (.-reaction obj) nil))
                               (when (some-> destroy .-destroy some?)
                                 (.destroy destroy))))
            v (-deref r)]
        (set! cached-reactions (assoc cached-reactions key r))
