async static Task <string> ReadLine(PipeReader reader) { var sb = new StringBuilder(); string result = null; while (result == null) { var inp = await reader.ReadAsync(); var buffer = inp.Buffer; var split = buffer.PositionOf((byte)'\n'); SequencePosition consumed = buffer.Start; if (split != null) { var contents = buffer.Slice(0, split.Value); result = PipeTextReader.ReadString(contents, Encoding.UTF8); consumed = buffer.GetPosition(1, split.Value); } reader.AdvanceTo(consumed); } return(result); }