internal virtual IAsyncResult BeginSend(BaseWriter writer, bool sendEnvelope, bool allowUnicode, AsyncCallback callback, object state) { PrepareHeaders(sendEnvelope, allowUnicode); writer.WriteHeaders(Headers, allowUnicode); if (Content != null) { return(Content.BeginSend(writer, callback, allowUnicode, state)); } else { LazyAsyncResult result = new LazyAsyncResult(this, state, callback); IAsyncResult newResult = writer.BeginGetContentStream(EmptySendCallback, new EmptySendContext(writer, result)); if (newResult.CompletedSynchronously) { writer.EndGetContentStream(newResult).Close(); } return(result); } }