/// <summary>
/// Initiates a single receive operation (note: Receives are made recursively until no data remains on the wire.
/// Multiple "MessageReceived" events may occur during this time. It is recommended that calling code does not
/// initiate new Receive operations during MessageReceived events but rather wait until the <paramref name="complete"/> action is invoked)
/// </summary>
/// <param name="complete">The action to invoke upon completion</param>
public virtual void ReceiveAsync(Action complete) {