static string ToText(Owin.BodyDelegate body, Encoding encoding) { var sb = new StringBuilder(); var wait = new ManualResetEvent(false); Exception exception = null; body.Invoke( (data, _) => { sb.Append(encoding.GetString(data.Array, data.Offset, data.Count)); return false; }, ex => { exception = ex; wait.Set(); }, CancellationToken.None); wait.WaitOne(); if (exception != null) throw new AggregateException(exception); return sb.ToString(); }