                     }
                     return
                 }
-                route.handler.respond(to: request, result: result)
+                route.handler.respond(to: request) { chainedResponse in
+                    result {
+                        request.response.merged(try chainedResponse())
+                    }
+                }
             }
         } else {
             responder = BasicAsyncResponder { [unowned self] _, result in

            }
        }
    }

    private func processStream(response: Response, _ request: Request, _ stream: Skelton.HTTPStream){
        var response = response
        
        if response.contentLength == 0 && !response.isChunkEncoded {
            response.contentLength = response.bodyLength

            result { Response() }
        }
    }
    
    internal func dispatch(request: Request, stream: Skelton.HTTPStream){
        var request = request
        let responder: AsyncResponder
