public void Start(Func<ArraySegment<byte>, Action<Exception>, TempEnum> write, Action<Exception> end, CancellationToken cancellationToken) { bodyStream = new BodyStream(write, end, cancellationToken); Action start = () => { try { if (bodyStream.CanSend()) { var bytes = encoding.GetBytes(text); var segment = new ArraySegment<byte>(bytes); // Not buffered. bodyStream.SendBytes(segment, null, null); bodyStream.Finish(); } } catch (Exception ex) { bodyStream.End(ex); } }; bodyStream.Start(start, null); }