Using a configuration very similar to yours, I can totally see messages pending delivery written in the .mule/queuestore/queuestore
directory.
The only thing I can think of is an issue with this expression groovy:message.getInvocationProperty('soapResponse') == 'BAD'
that would somehow mess with the processing.
Is this expression correct? Why not using MEL?