TransmitData() calls effectively block until an error occurs (e.g. datastream_sender_timeout_ms expires) or the RPC is serviced by the receiver.
This is bad for a variety of reasons, not least that it makes it impossible to cancel the sender without also cancelling the recipient (who might not even be running!).
Instead, we should have TransmitData() return control to the caller with an EAGAIN-like error so that the row batch can be resent in the future if the caller decides to do so.