'Send a request to a specific node.
Arguments:
node_id (int): destination node
request (Struct): request object (not-encoded)
Raises:
AssertionError: if node_id is not in current cluster metadata
Returns:
Future: resolves to Response struct or Error'

def send(self, node_id, request):

    if (not self._maybe_connect(node_id)):
        return Future().failure(Errors.NodeNotReadyError(node_id))
    return self._conns[node_id].send(request)
