The initial response is written to a buffer. If the buffer fills it gets sent as is considered 'committed', if you farward after his point you gaet an
IllegalStateException. If you forward before the buffer fills the buffer gets cleared (ie deleted) and starts from scratch.
In general it is a bad idea to rely on the buffer to manage this behaviour. It is better to decide whether to show A or B and only show that resource, rather than showing one and then changing your mind, hoping it won't fail horribly.