function loadNodeSet(node) {
    if (!node.enabled) {
        return Promise.resolve(node);
    } else {
    }
    try {
        var loadPromise = null;
        var r = require(node.file);
        r = r.__esModule ? r.default : r
        if (typeof r === "function") {

            var red = registryUtil.createNodeApi(node);
            var promise = r(red);
            if (promise != null && typeof promise.then === "function") {
                loadPromise = promise.then(function() {
                    node.enabled = true;
                    node.loaded = true;
                    return node;
                }).catch(function(err) {
                    node.err = err;
                    return node;
                });
            }
        }
        if (loadPromise == null) {
            node.enabled = true;
            node.loaded = true;
            loadPromise = Promise.resolve(node);
        }
        return loadPromise;
    } catch(err) {
        node.err = err;
        var stack = err.stack;
        var message;
        if (stack) {
            var filePath = node.file;
            try {
                filePath = fs.realpathSync(filePath);
            }
            catch (e) {
                // ignore canonicalization error
            }
            var i = stack.indexOf(filePath);
            if (i > -1) {
                var excerpt = stack.substring(i+filePath.length+1,i+filePath.length+20);
                var m = /^(\d+)/.exec(excerpt);
                if (m) {
                    node.err = err+" (line:"+m[1]+")";
                }
            }
        }
        return Promise.resolve(node);
    }
}
Loads the specified node into the runtime
@param node a node info object - see loadNodeConfig
@return a promise that resolves to an update node info object. The object
        has the following properties added:
           err: any error encountered whilst loading the node