         redis.call('srem', _:qk-gc,            mid)
         redis.call('hdel', _:qk-msgs,          mid)
         redis.call('hdel', _:qk-locks,         mid)
-        redis.call('hdel', _:qk-nretries,      mid)
+        redis.call('hdel', _:qk-nattempts,     mid)
         -- NB do NOT prune :qk_backoffs now, will be used post-handler as a
         -- dedupe backoff
         redis.call('set', _:qk-ndry-runs, 0) -- Did work on this run

        redis.call('hdel', _:qk-backoffs, mid)
      end

      local retries = 0
      if (lock_exp ~= 0) then
        retries = tonumber(redis.call('hincrby', _:qk-nretries, mid))
      else
        retries = tonumber(redis.call('hget', _:qk-nretries, mid) or 0)
      end

      redis.call('set', _:qk-ndry-runs, 0) -- Did work on this run

      local mcontent = redis.call('hget', _:qk-msgs, mid)
      local attempts = retries + 1
      return {mid, mcontent, attempts}
    end"
   {:qk-msgs        (qkey qname :msgs)
    :qk-locks       (qkey qname :locks)
    :qk-backoffs    (qkey qname :backoffs)
    :qk-nretries    (qkey qname :nretries)
    :qk-mid-circle  (qkey qname :mid-circle)
    :qk-gc          (qkey qname :gc)
    :qk-eoq-backoff (qkey qname :eoq-backoff?)

    * carmine:mq:<qname>:msgs         -> hash, {mid mcontent}.
    * carmine:mq:<qname>:locks        -> hash, {mid lock-expiry-time}.
    * carmine:mq:<qname>:backoffs     -> hash, {mid backoff-expiry-time}.
    * carmine:mq:<qname>:nattempts    -> hash, {mid attempt-count}.
    * carmine:mq:<qname>:mid-circle   -> list, rotating list of mids.
    * carmine:mq:<qname>:gc           -> set, for efficient mid removal from circle.
    * carmine:mq:<qname>:eoq-backoff? -> ttl flag, used for queue-wide (every-worker)
