Diagnosis: ReadVFile holds the readv_result and gradually returns data from within it. Its _next() method assumes it can call .next() on the readv_result to get the next chunk of it - in other words, that the readv_result holds state about how much of the result has so far been consumed.
Some confusion here about TransportLogDecorator vs TransportTraceDecorator...
TransportLogDecorator's _show_result folds generators into a list, and I think it needs to change so that it also keeps a copy as a generator so that it can return that.
Diagnosis: ReadVFile holds the readv_result and gradually returns data from within it. Its _next() method assumes it can call .next() on the readv_result to get the next chunk of it - in other words, that the readv_result holds state about how much of the result has so far been consumed.
Some confusion here about TransportLogDec orator vs TransportTraceD ecorator. ..
TransportLogDec orator' s _show_result folds generators into a list, and I think it needs to change so that it also keeps a copy as a generator so that it can return that.
That fixes it interactively, so I'll add a test.