code: func (fr *fileReader) reader() (io.Reader, error) {
  	if fr.err != nil {
  		return nil, fr.err
  	}
  
  	if fr.rc != nil {
  		return fr.brd, nil
  	}
  
  	// If we don't have a reader, open one up.
  	rc, err := fr.driver.Reader(fr.ctx, fr.path, fr.offset)
  	if err != nil {
  		switch err := err.(type) {
  		case storagedriver.PathNotFoundError:
  			// NOTE(stevvooe): If the path is not found, we simply return a
  			// reader that returns io.EOF. However, we do not set fr.rc,
  			// allowing future attempts at getting a reader to possibly
  			// succeed if the file turns up later.
  			return ioutil.NopCloser(bytes.NewReader([]byte{})), nil
  		default:
  			return nil, err
  		}
  	}
  
  	fr.rc = rc
  
  	if fr.brd == nil {
  		fr.brd = bufio.NewReaderSize(fr.rc, fileReaderBufferSize)
  	} else {
  		fr.brd.Reset(fr.rc)
  	}
  
  	return fr.brd, nil
  }
docs: // reader prepares the current reader at the lrs offset, ensuring its buffered
  // and ready to go.