class Aws::Waiters::Waiter

def poll(options)

def poll(options)
  n = 0
  loop do
    trigger_before_attempt(n)
    state, resp = @poller.call(options)
    n += 1
    case state
    when :retry
    when :success then return resp
    when :failure then raise Errors::FailureStateError.new(resp)
    when :error   then raise Errors::UnexpectedError.new(resp.error)
    end
    raise Errors::TooManyAttemptsError.new(n) if n == @max_attempts
    trigger_before_wait(n, resp)
    sleep(@delay)
  end
end