# File lib/dnstraverse/caching_resolver.rb, line 33
    def query(name, type, klass = Dnsruby::Classes.IN)
      @requests+= 1
      ip = self.config.nameserver[0]
      udp_size = self.udp_size
      self.udp_size = udp_size # workaround for bug in dnsruby
      Log.debug { "Querying #{name} to #{ip} class #{klass} type #{type}"}
      key = "key:res:#{ip}:#{name}:#{klass}:#{type}:#{udp_size}"
      if @cache.has_key?(key) then
        Log.debug { "Cache hit: #{key}" }
        @cache_hits+= 1
        return @cache[key]
      end
      answer = nil
      begin
        msg = Dnsruby::Message.new
        msg.add_question(name, type, klass)
        q = Queue.new
        send_async(msg, q)
        id, result, error = q.pop
        answer = result || error
      rescue => e
        answer = RuntimeError.new "Dnsruby failure: " + e.to_s
      end  
      @cache[key] = answer
      Log.debug { "Cache store: #{key}" }
      @cache[key]
    end