code: func NonEmptyReader(r io.Reader) (io.Reader, error) {
  	pr, ok := r.(readPeeker)
  	if !ok {
  		pr = bufio.NewReader(r)
  	}
  
  	_, err := pr.Peek(1)
  	if err == io.EOF {
  		return nil, ErrEmptyReader
  	}
  
  	if err != nil {
  		return nil, err
  	}
  
  	return pr, nil
  }
docs: // NonEmptyReader takes a reader and returns it if it is not empty, or
  // `ErrEmptyReader` if it is empty. If there is an error when reading the first
  // byte of the given reader, it will be propagated.