code: func (br *bufReader) readTillDelims(delims []byte) ([]byte, error) {
  	if len(delims) == 0 {
  		return nil, nil
  	}
  	if len(delims) == 1 {
  		return br.readTillDelim(delims[0])
  	}
  
  	result := make([]byte, 0)
  
  	for {
  		read, err := br.readTillDelim(delims[0])
  		if err != nil {
  			return result, err
  		}
  		result = append(result, read...)
  
  		peeked, err := br.buf.Peek(len(delims))
  		if err != nil {
  			return result, err
  		}
  
  		if bytes.Equal(peeked, delims) {
  			break
  		}
  
  		b, err := br.buf.ReadByte()
  		if err != nil {
  			return result, err
  		}
  		result = append(result, b)
  	}
  
  	return result, nil
  }
docs: // readTillDelims reads until the first occurrence of delims in the input,
  // returning a slice containing the data up to and NOT including the delimiters.
  // If ReadTillDelims encounters an error before finding a delimiters,
  // it returns the data read before the error and the error itself.
  // ReadTillDelims returns err != nil if and only if ReadTillDelims didn't find
  // delims.