Hi,
I am not sure what you mean by this statement: "Btw, this is a common mistake people are facing: to think about threads and not synchronous events." Is this a problem you are having with understanding vert.x or your team? It is not really clear to me what that statement means. But here are a few thoughts anyways:
a) Try to use built in vert.x IO functions (http client, file io, TCP, Mongo, myslq client, etc) when it is available. The issue with your code had less to do with having 1 server, and more to do with the fact that you mixed a non-vertx http client within vertx..
b) Given the above, you "can" mix in non-vertx IO with vertx, but you have to do so with some caution and awareness of what is going on. Either wrap it in blocking call (if it is a blocking IO library). Or, if it is another async library you have to eventually get back on to the event loop (probably using runOnContext).
That being said, your issue would be solved by just using the vertx httpclient.
-Adam