     :test-while-idle? (.setTestWhileIdle pool v) ; false
     :time-between-eviction-runs-ms (.setTimeBetweenEvictionRunsMillis pool v) ; -1
 
+    :instrument nil ; noop (ignore)
+
     (throw (ex-info (str "Unknown pool option: " k) {:option k})))
   pool)
 
 (def conn-pool
   (enc/memoize_
     (fn [pool-opts]
+
+      (when-let [f (get-in pool-opts [:instrument :on-pool-init])]
+        (f {:pool-opts pool-opts}))
+
       (cond
         (identical? pool-opts :none) (->NonPooledConnectionPool)
         ;; Pass through pre-made pools (note that test reflects):

          (protocol/with-context this
            (protocol/with-replies
              (taoensso.carmine/ping)))
          (catch Exception _)))))
  (close-conn [_] (.close socket)))

(defprotocol IConnectionPool
  (get-conn     [this spec])

                   (BufferedOutputStream. buff-size)))

        db (when (and db (not (zero? db))) db)]

    (when-let [f (get-in spec [:instrument :on-conn-open])] (f {:spec spec}))

    (when (or password db conn-setup-fn)
      (protocol/with-context conn
