class Selenium::WebDriver::Wait

def until

def until
  end_time = current_time + @timeout
  last_error = nil
  until current_time > end_time
    begin
      result = yield
      return result if result
    rescue *@ignored => last_error # rubocop:disable Naming/RescuedExceptionsVariableName
      # swallowed
    end
    sleep @interval
  end
  msg = if @message
          @message.dup
        else
          "timed out after #{@timeout} seconds"
        end
  msg << " (#{last_error.message})" if last_error
  raise Error::TimeoutError, msg
end