1. Filters follow stack processing.
2. The control always comes back to the filter thru which it has passes in the reverse sequence.
3. And being you have wrapped the container's response object, you are not writing directly to the response object but your own custom made response object.
4. So once you come back from the servlet in the filter, then you can take action on what needs to go to response.
So the notification from the servlet to filter always happens whether it is wrapped response or not. It is just a matter that you have wrapped the response hence container didn�t have any chance to write to the actual response object.
I hope, this clarifies your doubt.
Thanks,
Atul Samnerkar