lib/runner/util.js
function (fn, ctx) {
        // extract the arguments that are to be forwarded to the function to be called
        var args = Array.prototype.slice.call(arguments, 2);

        try {
            (typeof fn === FUNCTION) && fn.apply(ctx || global, args);
        }
        catch (err) {
            return err;
        }
    }
function (fn, ctx) {
        // extract the arguments that are to be forwarded to the function to be called
        var args = Array.prototype.slice.call(arguments, 2);

        try {
            (typeof fn === FUNCTION) && fn.apply(ctx || global, args);
        }
        catch (err) {
            return err;
        }
    }
function ( fn , ctx ) { // extract the arguments that are to be forwarded to the function to be called var args = Array . prototype . slice . call ( arguments , 2 ) ; try { ( typeof fn === FUNCTION ) && fn . apply ( ctx || global , args ) ; } catch ( err ) { return err ; } }
This function allows one to call another function by wrapping it within a try-catch block.
The first parameter is the function itself, followed by the scope in which this function is to be executed.
The third parameter onwards are blindly forwarded to the function being called

@param {Function} fn
@param {*} ctx

@returns {Error} If there was an error executing the function, the error is returned.
Note that if the function called here is asynchronous, it's errors will not be returned (for obvious reasons!)
This function allows one to call another function by wrapping it within a try - catch block . The first parameter is the function itself followed by the scope in which this function is to be executed . The third parameter onwards are blindly forwarded to the function being called