// the other side has registered a handler and responded at least once.
eventBus.sendWithTimeout(inAddress, new JsonObject().putString("action", "connect"), 1000, new Handler<AsyncResult<Message<Boolean>>>() {
@Override
public void handle(AsyncResult<Message<Boolean>> result) {
if (result.failed()) {
ReplyException failure = (ReplyException) result.cause();
if (failure.failureType().equals(ReplyFailure.RECIPIENT_FAILURE)) {
log.warn(String.format("%s - Failed to connect to %s", DefaultOutputConnection.this, context.target()), result.cause());
new DefaultFutureResult<Void>(failure).setHandler(doneHandler);
} else if (failure.failureType().equals(ReplyFailure.TIMEOUT)) {
log.warn(String.format("%s - Connection to %s failed, retrying", DefaultOutputConnection.this, context.target()));
connect(doneHandler);
} else {
log.debug(String.format("%s - Connection to %s failed, retrying", DefaultOutputConnection.this, context.target()));
vertx.setTimer(500, new Handler<Long>() {