function wrapped() {
		var args;
		var len;
		var i;

		len = arguments.length;
		args = new Array( len );
		for ( i = 0; i < len; i++ ) {
			args[ i ] = arguments[ i ];
		}
		try {
			return fcn.apply( ctx, args );
		} catch ( error ) {
			if ( isError( error ) ) {
				return error;
			}
			// Handle thrown literals...
			if ( typeof error === 'object' ) {
				return new Error( JSON.stringify( error ) );
			}
			return new Error( error.toString() );
		}
	}
Wrapped function.

@private
@param {...*} [args] - function arguments
@returns {*|Error} returned value or an error object