title: building async httpbuilder similar to httpbuilder
body: <p>Might be the wrong place to post this but I have been messing around with async http builders trying to get basic cypher queries to work.  It works with Http Builders but can't get it to work with the async version.  </p>
  
  <pre><code>   @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.6' )
      @Grab(group='net.sf.json-lib', module='json-lib', version='2.4', classifier='jdk15' )
  
      import groovyx.net.http.*
      import static groovyx.net.http.ContentType.*
      import static groovyx.net.http.Method.*
  
      def query(statement, params,success, error) {
      def http = new HTTPBuilder( 'http://localhost:7474' )
      http.request( POST, JSON ) {
      uri.path = '/db/data/cypher/'
      headers.'X-Stream' = 'true'
      requestContentType = JSON
      body =  [ query : statement , params : params ?: [:] ]
  
       // uri.query = [ param : 'value' ]
  
       response.success = { resp, json -&gt;
         if (success) success(json)
         else {
          println "Status ${resp.statusLine} Columns ${json.columns}\nData: ${json.data}"
         }
       }
  
       response.failure = { resp, message -&gt;
             def result=[status:resp.statusLine.statusCode,statusText:resp.statusLine.reasonPhrase]
             result.headers = resp.headers.collect { h -&gt; [ (h.name) : h.value ] }
             result.message = message
         if (error) {
                   error(result)
         } else {
          println "Status: ${result.status} : ${result.statusText} "
          println 'Headers: ${result.headers}'
          println 'Message: ${result.message}'
         }
       }
      }
     }
  </code></pre>
  
  <p></p>
  
  <pre><code>query("MATCH n RETURN n;",[],{ println "Success: ${it}" },{ println "Error: ${it}" })
  </code></pre>
  
  <p></p>
  
  <p>However I have tried this with the <code>AsyncHttpBuilder</code>.  Couldn't get it to work.  Now I am trying a simple thing and have been unable to get it to give anytype of useful result.</p>
  
  <pre><code>@Test
  public void testQueue()
  {
      def http = new AsyncHTTPBuilder( poolSize : 1 ,
              uri : 'http://localhost:7474/db/data/cypher' )
      def responses = []
      responses &lt;&lt; http.post(query : [q:  "MATCH n RETURN n;"]) {return it}
  
  
      if (!responses.every{it.done})
      {
          println 'waiting...'
          Thread.sleep(2000)
      }
      responses.each {
          println(it)
      }
      http.shutdown()
  } 
  </code></pre>
  
  <p>Any thoughts? Thanks!</p>