           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-retry-msg-buf id retry-id)
          offer-f (fn [] (.offer pub unsafe-buffer 0 protocol/retry-msg-length))]
      (while (neg? ^long (offer-f))
        (.idle ^IdleStrategy idle-strategy 0)))))

(defmethod extensions/close-peer-connection AeronConnection

  (doseq [segment batch]
    (>!! ch segment)))

(def ^:const publication-backpressured? (long -2))

(defmethod extensions/send-messages AeronConnection
  [messenger event {:keys [id channel] :as conn-info} batch]
  (if ((:short-circuitable? messenger) channel) 
