When using an asynchronous request in Stick/Ringo, we create an AsyncResponse object and return it from the Application handler. After some period of time, the resulting output to the caller is written to the AsyncResponse and the connection is closed. At this time, one would want the middleware stack to unwind, and each middleware has a chance to handle the response object.
Unfortunately, the middleware is unwound when the AsyncResponse object is returned. Even though the servlet response was waiting for the async functions, stick invokes the middleware immediately, and therefore the middleware has no affect.
This means that any middleware that deals with the response (gzip, cors, csrf, error, etag, etc.) is entirely broken for async handlers. My hunch is that the design change would be also hard to implement because middleware exists between the app and the connector, and the connector handles the async request logic.