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);
        }