How does one tell when a winsock.SendData has completed?

I thought there would be some state field to indicate that it completed but didn't find anything like that. The only thing that I can see that might work is the "bytesreceived" status. If I wait until I receive something back, or reach some arbitrary timeout, but there must be a better way.

Any suggestions?