@Override
    public void send(Message msg, List<RoutingNode> recipients) {
        SendContext ctx = new SendContext(this, msg, recipients);
        Duration timeout = Duration.ofMillis(ctx.msg.getTimeRemainingNow());
        for (RoutingNode recipient : ctx.recipients) {
            RPCServiceAddress address = (RPCServiceAddress)recipient.getServiceAddress();
            address.getTarget().resolveVersion(timeout, ctx);
        }
    }
The network uses a cache of RPC targets (see {@link RPCTargetPool}) that allows it to save time by reusing open
connections. It works by keeping a set of the most recently used targets open. Calling this method forces all
unused connections to close immediately.
messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java