code: func (i *impl) Required(err error) bool {
  	if i.retries == i.opts.Attempts {
  		return false
  	}
  
  	s, ok := status.FromError(err)
  	if ok && i.isRetryable(s.Group, s.Code) {
  		time.Sleep(i.backoffPeriod())
  		i.retries++
  		return true
  	}
  
  	return false
  }
docs: // Required determines if retry is required for the given error
  // Note: backoffs are implemented behind this interface