I am observing this weird behaviour of watching a clojure ref. It seems to behave wrong/delayed when not wrapped in a let
block:
(let []
(def ^{:flag 1} v 1))
(def ^{:flag 2} v 2)
(add-watch #'v ::listener (fn [_key _ref old-value new-value]
(println "old " old-value ", new" new-value "new-meta " _ref (select-keys (meta _ref) [:flag]))))