class Aws::EC2Metadata

def retry_errors(options = {}, &_block)

def retry_errors(options = {}, &_block)
  max_retries = options[:max_retries]
  retries = 0
  begin
    yield
  # These errors should not be retried.
  rescue TokenRetrievalError, MetadataNotFoundError, RequestForbiddenError
    raise
  # StandardError is not ideal but it covers Net::HTTP errors.
  # https://gist.github.com/tenderlove/245188
  rescue StandardError, TokenExpiredError
    raise unless retries < max_retries
    @backoff.call(retries)
    retries += 1
    retry
  end
end