                      Can be a (fn [ndry-runs]) => ms. Sleep synchronized for all
                      queue workers.
    :throttle-ms    - Thread sleep period between each poll."
-  [conn qname & [{:keys [handler lock-ms eoq-backoff-ms throttle-ms auto-start?]
+  [conn qname & [{:keys [handler monitor lock-ms eoq-backoff-ms throttle-ms
+                         auto-start?]
                   :or   {handler (fn [{:keys [message attempt]}]
                                    (timbre/info qname message attempt)
                                    {:status :success})

    (when-not @running?
      (reset! running? true)
      (future
        (let [{:keys [handler throttle-ms eoq-backoff-ms]} opts
              qk    (partial qkey qname)
              done  (fn [mid] (wcar conn (car/sadd (qk "recently-done") mid)))
              retry (fn [mid & [backoff-ms]]

                     or returns {:status     <#{:success :error :retry}>
                                 :throwable  <Throwable>
                                 :backoff-ms <retry-backoff-ms}.
   :monitor        - (fn [{:keys [mid-circle-len ndry-runs]}]) called on each
                     worker loop iteration. Useful for queue monitoring/logging.
   :lock-ms        - Max time handler may keep a message before handler
                     considered fatally stalled and message re-queued. Must be
                     sufficiently high to prevent double handling.
