            (clear-timeout state current-state)
 
            (= :open evt)
-           (bump-timeout state current-state)
+           (do
+             (bump-timeout state current-state)
+             (swap! state #(assoc % :address-info val)))
 
            (not (#{:pause :resume :abort} evt))
            (throw

    (let [downstream (.downstream current-state)]
      (downstream :abort (Exception. "Connection reached max keep alive time.")))))

(defn- initial-exchange-state
  [conn downstream opts]
  (ExchangeState.
   conn
   nil
   downstream
   handle-request


(defrecord ExchangeState
    [connection
     address-info
     upstream
     downstream
     next-up-fn
