                     }
                     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


public class Slimane {
    internal var middlewares: [AsyncMiddleware] = []

    internal var router: Router
    
    public var setNodelay = false

            }
        }
    }
    
    private func processStream(response: Response, _ request: Request, _ stream: Skelton.HTTPStream){
        var response = response
        
        response.headers["Date"] = Header(Time().rfc1123)
        response.headers["Server"] = Header("Slimane")
        
        if response.headers["Connection"].isEmpty {
            response.headers["Connection"] = Header(request.isKeepAlive ? "Keep-Alive" : "Close")
        }
        
        if response.contentLength == 0 && !response.isChunkEncoded {
            response.contentLength = response.bodyLength
