When a control message is sent while another message is being
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,
EndMessageHanlder, TextMessageSendHandler) ensures that there
will only ever be one data message part in the queue. There
could be multiple control messages in the queue.