code: func (nc *Conn) readProto() (string, error) {
  	var (
  		_buf     = [10]byte{}
  		buf      = _buf[:0]
  		b        = [1]byte{}
  		protoEnd = byte('\n')
  	)
  	for {
  		if _, err := nc.conn.Read(b[:1]); err != nil {
  			// Do not report EOF error
  			if err == io.EOF {
  				return string(buf), nil
  			}
  			return "", err
  		}
  		buf = append(buf, b[0])
  		if b[0] == protoEnd {
  			return string(buf), nil
  		}
  	}
  }
docs: // reads a protocol one byte at a time.