      :mcontent      (car/freeze message)})
    (car/parse #(if (vector? %) (first %) {:carmine.mq/error (keyword %)}))))
 
-(comment (wcar {} (enqueue "myq" "msg"))
-         (wcar {} (enqueue "myq" "msg" "myid")))
-
 (defn dequeue
   "IMPLEMENTATION DETAIL: Use `worker` instead.
   Rotates queue's mid-circle and processes next mid. Returns:

    (when-not @running?
      (reset! running? true)
      (future
        (let [{:keys [handler monitor throttle-ms eoq-backoff-ms]} opts
              qk (partial qkey qname)]
          (while @running?
            (try
              (let [[ndruns mid-circle-size] (wcar conn (car/get  (qk :ndry-runs))
                                                        (car/llen (qk :mid-circle)))
                    ndruns (or (car/as-long ndruns) 0)
                    eoq-backoff-ms* (if-not (fn? eoq-backoff-ms) eoq-backoff-ms
                                      (eoq-backoff-ms (inc ndruns)))
                    opts* (assoc opts :eoq-backoff-ms eoq-backoff-ms*)
                    poll-reply (wcar conn (dequeue qname opts*))]

                (when monitor
                  (monitor {:mid-circle-size mid-circle-size
                            :ndry-runs       ndruns
                            :poll-reply      poll-reply}))

                (if (= poll-reply "eoq-backoff")
                  (when eoq-backoff-ms* (Thread/sleep eoq-backoff-ms*))
                  (handle1 conn qname handler poll-reply)))

              (catch Throwable t (timbre/fatalf t "Worker error!") (throw t)))

                     considered fatally stalled and message re-queued. Must be
                     sufficiently high to prevent double handling.
   :eoq-backoff-ms - Thread sleep period each time end of queue is reached.
                     Can be a (fn [ndry-runs]) -> ms (n<=5) will be used.
                     Sleep synchronized for all queue workers.
   :throttle-ms    - Thread sleep period between each poll."
  [conn qname & [{:keys [handler monitor lock-ms eoq-backoff-ms throttle-ms
                         auto-start?]
                  :or   {handler (fn [args] (timbre/infof "%s" args)
                                           {:status :success})
                         monitor (monitor-fn qname 1000 (* 1000 60 60))
                         lock-ms        (* 1000 60 60)
                         throttle-ms    200
                         eoq-backoff-ms exp-backoff
                         auto-start?    true}}]]
  (let [w (->Worker conn qname (atom false)
                    {:handler        handler
