Guys, read this a bit

If the buffer is full the tcp layer itself will handle the data on the other applications, and will stop sending until the socket can receive more.

In our case we have control on that layer, that is why we need to keep checking how full it is.

This is my interpretation