This would require sink to write the buffer before it's first call, since you don't track that.
That's delegated to the sink delegate.
Wouldn't it be better to track the "used" length in buff directly so write can handle that?
The used length is tracked by shrinking the buff. This only shows the callee's perspective.
