Thread safety

if we make runOnContext asynchronous then we can keep method synchronized and only change callback to vertx.runOnContext(callback);