The sentBytes and recvBytes fields on ReportListener.Report are set by ReportListener.onComplete by using the ConnectionStatistics instance.
However at the time onComplete is called the ConnectionStatistics has not been updated.
I can see at the time ReportListener.onComplete is called that both sentBytes and recvBytes are 0.
And then after I wait for reportListener.whenComplete().join() I can manually inspect the ConnectionStatistics and it has correct values (bytes in/out=2264849/2579828).