// Add a timeout to remove the reply handler to prevent leaks in case a reply never comes
timeoutID = vertx.setTimer(options.getSendTimeout(), timerID -> {
log.warn("Message reply handler timed out as no reply was received - it will be removed");
refReg.get().unregister();
metrics.replyFailure(message.address(), ReplyFailure.TIMEOUT);
replyHandler.handle(Future.completedFuture(new ReplyException(ReplyFailure.TIMEOUT, "Timed out waiting for reply")));
});
simpleReplyHandler = convertHandler(replyHandler);
MessageConsumer registration = registerHandler(message.replyAddress(), simpleReplyHandler, true, true, timeoutID);
refReg.set(registration);
}