That's odd, TBaseSocket's WaitForData documentation specifies that you should call it before SendBuf and Sendln calls. I had a quick try and (perhaps because I trying to write first) this WaitForData call returns false. (after timing out the specified timeout)
So is this incorrect? Or incomplete? Or only valid in a number of circumstances?