     (when-not @running?
       (reset! running? true)
       (future
-        (let [{:keys [handler monitor throttle-ms eoq-backoff-ms]} opts
+        (let [{:keys [handler monitor throttle-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}))
+              (let [[poll-reply ndruns mid-circle-size]
+                    (wcar conn (dequeue qname opts)
+                               (car/get  (qk :ndry-runs))
+                               (car/llen (qk :mid-circle)))]
+
+                (when monitor (monitor {:mid-circle-size mid-circle-size
+                                        :ndry-runs       (or ndruns 0)
+                                        :poll-reply      poll-reply}))
 
                 (if (= poll-reply "eoq-backoff")
-                  (when eoq-backoff-ms* (Thread/sleep eoq-backoff-ms*))
+                  (Thread/sleep (max (wcar conn (car/pttl (qk :eoq-backoff?))) 10))
                   (handle1 conn qname handler poll-reply)))
 
               (catch Throwable t (timbre/fatalf t "Worker error!") (throw t)))

                     :eoq-backoff-ms eoq-backoff-ms
                     :throttle-ms    throttle-ms})]
    (when auto-start? (start w)) w))

(comment
  (def w1 (worker {} "myq"))
  (wcar {} (enqueue "myq" "msg"))
  (stop w1)
  (queue-status {} "myq"))

;;;; Renamed/deprecated


     :mcontent      (car/freeze message)})
   (car/parse #(if (vector? %) (first %) {:carmine.mq/error (keyword %)}))))

(defn dequeue
  "IMPLEMENTATION DETAIL: Use `worker` instead.
  Rotates queue's mid-circle and processes next mid. Returns:
