When a control message is sent while another message is being
sent, the control message is queued. Chances are the
subsequent data message part will end up queued while the
control message is sent. The logic in this class (state
machine, EndMessageHandler, TextMessageSendHandler) ensures
that there will only ever be one data message part in the
queue. There could be multiple control messages in the queue.