                       (done mid)
                       (timbre/error
                        (if throwable throwable (Exception. ":error handler response"))
-                       (str "Error handling queue message: " qname "\n" poll-reply)))
-              ndruns #(wcar conn (case % :reset (car/set  (qk "ndry-runs") 0)
-                                         :inc   (car/incr (qk "ndry-runs"))))]
-
-          (ndruns :reset)
+                       (str "Error handling queue message: " qname "\n" poll-reply)))]
+
           (while @running?
             (try
-              (let [ndruns* (ndruns :inc) ; Speculative
+              (let [[ndruns mid-circle-len] (wcar conn (car/get  (qk "ndry-runs"))
+                                                       (car/llen (qk "mid-circle")))
+                    ndruns (or ndruns 0)
                     eoq-backoff-ms* (if (fn? eoq-backoff-ms)
-                                      (eoq-backoff-ms ndruns*)
+                                      (eoq-backoff-ms (inc ndruns))
                                       eoq-backoff-ms)
                     opts* (assoc opts :eoq-backoff-ms eoq-backoff-ms*)]
+
+                ;; TODO For optional logging fn
+                ;; {:ndry-runs      ndruns
+                ;;  :mid-circle-len mid-circle-len}
+
                 (when-let [[mid mcontent attempt :as poll-reply]
                            (wcar conn (dequeue qname opts*))]
                   (if (= poll-reply "eoq-backoff")

      if (not mid) or (mid == 'end-of-circle') then
        -- Set queue-wide polling backoff flag
        redis.call('psetex', _:qk-eoq-backoff, _:eoq-backoff-ms, 'true')
        return 'eoq-backoff'
      elseif redis.call('sismember', _:qk-recently-done, mid) == 1 then -- GC
        redis.call('lrem', _:qk-mid-circle, 1, mid) -- Efficient here

                                            (catch Throwable t {:status :error
                                                                :throwable t}))]
                            (when (map? result) result))]
                      (case status
                        :success (done mid)
                        :retry   (retry mid backoff-ms)
