class Signet::OAuth2::Client

def retry_with_error(max_retry_count = 5)

def retry_with_error(max_retry_count = 5)
  retry_count = 0
  begin
    yield
  rescue => e
    if e.is_a?(Signet::AuthorizationError) || e.is_a?(Signet::ParseError)
      raise e
    end
    if retry_count < max_retry_count
      retry_count += 1
      sleep retry_count * 0.3
      retry
    else
      msg = "Unexpected error: #{e.inspect}"
      raise(Signet::AuthorizationError, msg)
    end
  end
end