Before sending an exchange, the router "cleans" its messages to remove those that were already here before, for example if it's a DONE or ERROR status, all message are removed, or if it's an OUT, the IN message is removed.
There is more strange and not always coherent logic to it.
We shouldn't do that, I guess the objective is to save bandwidth when transferring over the network, but removing these messages kind of breaks the JBI specs, and makes checking the for state error very difficult (as in PETALSESBCONT-74).
The alternative is to simply have more "intelligent" transporters (for now only the NIO transporter) so that it only transfers what should be transferred.