If I'm reading the code correctly, when close is called, the stream is marked as closed and it's not possible to get out the leftover buffer.
I'm not sure what role Open buff | Closed buff were supposed to play, but the Open buffer is never filled in.