private void send(SendContext ctx) {
        if (destroyed.get()) {
            replyError(ctx, ErrorCode.NETWORK_SHUTDOWN, "Network layer has performed shutdown.");
        } else if (ctx.hasError) {
            replyError(ctx, ErrorCode.HANDSHAKE_FAILED,
                    String.format("An error occurred while resolving version of recipient(s) [%s] from host '%s'.",
                                  buildRecipientListString(ctx), identity.getHostname()));
        } else {
            new SendTask(owner.getProtocol(ctx.msg.getProtocol()), ctx).run();
        }
    }
This method is a callback invoked after {@link #send(Message, List)} once the version of all recipients have been
resolved. If all versions were resolved ahead of time, this method is invoked by the same thread as the former.
If not, this method is invoked by the network thread during the version callback.

@param ctx all the required send-data
messagebus/src/main/java/com/yahoo/messagebus/network/rpc/RPCNetwork.java