code: func IsRetryableError(err error) bool {
  	if err == nil {
  		return false
  	}
  
  	if _, ok := err.(net.Error); ok {
  		return true
  	}
  
  	// TODO (slackpad) - Make a real error type here instead of using
  	// a string check.
  	return strings.Contains(err.Error(), serverError)
  }
docs: // IsRetryableError returns true for 500 errors from the Consul servers, and
  // network connection errors. These are usually retryable at a later time.
  // This applies to reads but NOT to writes. This may return true for errors
  // on writes that may have still gone through, so do not use this to retry
  // any write operations.