           offer-f (fn [] (.offer pub unsafe-buffer 0 len))
           idle-strategy (:send-idle-strategy messenger)]
       ;;; TODO: offer will return a particular code when the publisher is down
-      ;;; we should probably re-restablish the publication in this case
-      (while (neg? ^long (offer-f))
+      ;;; we should probably re-establish the publication in this case
+      (while (= ^long (offer-f) publication-backpressured?)
         (.idle ^IdleStrategy idle-strategy 0)))))
 
 (defn ack-messages-short-circuit [ch acks]

          pub ^Publication (get-publication messenger conn-info)
          unsafe-buffer (protocol/build-completion-msg-buf id completion-id)
          offer-f (fn [] (.offer pub unsafe-buffer 0 protocol/completion-msg-length))]
      (while (neg? ^long (offer-f))
        (.idle ^IdleStrategy idle-strategy 0)))))

(defn retry-message-short-circuit [ch retry-id]

      (doseq [ack acks] 
        (let [unsafe-buffer (protocol/build-acker-message id (:id ack) (:completion-id ack) (:ack-val ack))
              offer-f (fn [] (.offer pub unsafe-buffer 0 protocol/ack-msg-length))]
      (while (= ^long (offer-f) publication-backpressured?)
        (.idle ^IdleStrategy idle-strategy 0)))))))

(defn complete-message-short-circuit [ch completion-id]
  (>!! ch completion-id))
