    #(stream-or-finalize-request state evt val %)))
 
 (defn- handle-request
-  [state _ [hdrs body :as request] _]
-  (let [keepalive?   (keepalive-request? request)
+  [state _ [hdrs body :as request] current-state]
+  (let [hdrs         (merge (.address-info current-state) hdrs)
+        keepalive?   (keepalive-request? request)
         expects-100? (expecting-100? request)
         head?        (= "HEAD" (hdrs :request-method))
         chunked?     (= :chunked body)

           (clear-timeout state current-state)

           (= :open evt)
           (bump-timeout state current-state)

           (not (#{:pause :resume :abort} evt))
           (throw

       (dn evt val)))))

(defn- exchange
  [app dn conn address-info opts]
  (let [state   (atom (initial-exchange-state conn dn address-info opts))
        next-up (app (mk-downstream-fn state dn))]
    ;; Track the upstream
    (swap! state #(assoc % :upstream next-up))
