code: func CopyWithCallback(writer io.Writer, reader io.Reader, totalSize int64, cb CopyCallback) (int64, error) {
  	if success, _ := CloneFile(writer, reader); success {
  		if cb != nil {
  			cb(totalSize, totalSize, 0)
  		}
  		return totalSize, nil
  	}
  	if cb == nil {
  		return io.Copy(writer, reader)
  	}
  
  	cbReader := &CallbackReader{
  		C:         cb,
  		TotalSize: totalSize,
  		Reader:    reader,
  	}
  	return io.Copy(writer, cbReader)
  }
docs: // CopyWithCallback copies reader to writer while performing a progress callback