fixed concurrency handling, we can't reuse the same HttpClient across multiple threads, so we use one NeoClient per thread, handled with a BlockingQueue