code: func (b *Backoffer) Fork() (*Backoffer, context.CancelFunc) {
  	ctx, cancel := context.WithCancel(b.ctx)
  	return &Backoffer{
  		ctx:        ctx,
  		maxSleep:   b.maxSleep,
  		totalSleep: b.totalSleep,
  		errors:     b.errors,
  		vars:       b.vars,
  	}, cancel
  }
docs: // Fork creates a new Backoffer which keeps current Backoffer's sleep time and errors, and holds
  // a child context of current Backoffer's context.