'Execute a node.
Args:
nodename (str): Name of node.
raw_string (str): The raw default string entered on the
previous node (only used if the node accepts it as an
argument)
Returns:
nodetext, options (tuple): The node text (a string or a
tuple and the options tuple, if any.'

def _execute_node(self, nodename, raw_string):

    try:
        node = self._menutree[nodename]
    except KeyError:
        self.caller.msg(_ERR_NOT_IMPLEMENTED.format(nodename=nodename), session=self._session)
        raise EvMenuError
    try:
        if (len(getargspec(node).args) > 1):
            (nodetext, options) = node(self.caller, raw_string)
        else:
            (nodetext, options) = node(self.caller)
    except KeyError:
        self.caller.msg(_ERR_NOT_IMPLEMENTED.format(nodename=nodename), session=self._session)
        raise EvMenuError
    except Exception:
        self.caller.msg(_ERR_GENERAL.format(nodename=nodename), session=self._session)
        raise
    return (nodetext, options)
