/**
   * @see
   *     org.apache.james.jspf.executor.DNSAsynchLookupService#getRecordsAsynch(org.apache.james.jspf.core.DNSRequest,
   *     int, org.apache.james.jspf.executor.IResponseQueue)
   */
  public void getRecordsAsynch(DNSRequest request, int id, IResponseQueue responsePool) {

    Message message;
    try {
      message = makeQuery(request, id);
      LookupAsynch la =
          new LookupAsynch(message.getQuestion().getName(), message.getQuestion().getType());
      la.runAsynch(
          new Runnable() {

            private IResponseQueue responsePool;
            private Integer id;
            private LookupAsynch lookup;

            public void run() {
              responsePool.insertResponse(
                  new IResponse() {

                    public Exception getException() {
                      if (lookup.getResult() == LookupAsynch.TRY_AGAIN) {
                        return new TimeoutException(lookup.getErrorString());
                      } else {
                        return null;
                      }
                    }

                    public Object getId() {
                      return id;
                    }

                    public List<String> getValue() {
                      return (DNSServiceXBillImpl.convertRecordsToList(lookup.getAnswers()));
                    }
                  });
            }

            public Runnable setResponsePool(
                LookupAsynch la, IResponseQueue responsePool, Integer integer) {
              this.lookup = la;
              this.responsePool = responsePool;
              this.id = integer;
              return this;
            }
          }.setResponsePool(la, responsePool, new Integer(id)));
      // this.resolver.sendAsync(message, new Integer(id), new ResponseQueueAdaptor(responsePool));
    } catch (TextParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }