When proxying from a plugin, you call TSVConnWrite passing in a TSIOBufferReader that is specific for the write side of the VC. The implication is that the core will use this reader to read out of the buffer as the plugin writes into it.
However, if you subsequently call TSIOBufferReaderAvail on the buffer reader that you created, you will find that this count of available bytes never goes down. It seems possible (likely?) that the consumer side of the write never calls consume() on the reader.
This can be demonstrated using the example/passthru/passthru.cc.