code: func (r *BodyWithCallback) Read(p []byte) (int, error) {
  	n, err := r.ReadSeekCloser.Read(p)
  
  	if n > 0 {
  		r.readSize += int64(n)
  
  		if (err == nil || err == io.EOF) && r.c != nil {
  			err = r.c(r.totalSize, r.readSize, n)
  		}
  	}
  	return n, err
  }
docs: // Read wraps the underlying Reader's "Read" method. It also captures the number
  // of bytes read, and calls the callback.