constructor ({
    maxRetryTimeout = DEFAULT_MAX_RETRY_TIME_MS,
    initialDelay = DEFAULT_INITIAL_RETRY_DELAY_MS,
    delayMultiplier = DEFAULT_RETRY_DELAY_MULTIPLIER,
    delayJitter = DEFAULT_RETRY_DELAY_JITTER_FACTOR,
    logger = null
  } = {}) {
    this._maxRetryTimeout = valueOrDefault(
      maxRetryTimeout,
      DEFAULT_MAX_RETRY_TIME_MS
    )
    this._initialDelay = valueOrDefault(
      initialDelay,
      DEFAULT_INITIAL_RETRY_DELAY_MS
    )
    this._delayMultiplier = valueOrDefault(
      delayMultiplier,
      DEFAULT_RETRY_DELAY_MULTIPLIER
    )
    this._delayJitter = valueOrDefault(
      delayJitter,
      DEFAULT_RETRY_DELAY_JITTER_FACTOR
    )
    this._logger = logger
  }
@param {Object} args
@param {Logger} args.logger