code: func Do(fn Func) error {
  	var err error
  	var cont bool
  	attempt := 1
  	for {
  		cont, err = fn(attempt)
  		if !cont || err == nil {
  			break
  		}
  		attempt++
  		if attempt > MaxRetries {
  			return errMaxRetriesReached
  		}
  	}
  	return err
  }
docs: // Do keeps trying the function until the second argument
  // returns false, or no error is returned.