mqlight.js
function setupError(obj, name, message) {
  if (obj) {
    Error.call(obj);
    Object.defineProperty(obj, 'name', {
      value: name,
      enumerable: false
    });
    Object.defineProperty(obj, 'message', {
      value: message,
      enumerable: false
    });
  } else {
    logger.ffdc('setupError', 'ffdc001', null, 'Client object not provided');
  }
}
function setupError(obj, name, message) {
  if (obj) {
    Error.call(obj);
    Object.defineProperty(obj, 'name', {
      value: name,
      enumerable: false
    });
    Object.defineProperty(obj, 'message', {
      value: message,
      enumerable: false
    });
  } else {
    logger.ffdc('setupError', 'ffdc001', null, 'Client object not provided');
  }
}
function setupError ( obj , name , message ) { if ( obj ) { Error . call ( obj ) ; Object . defineProperty ( obj , 'name' , { value : name , enumerable : false } ) ; Object . defineProperty ( obj , 'message' , { value : message , enumerable : false } ) ; } else { logger . ffdc ( 'setupError' , 'ffdc001' , null , 'Client object not provided' ) ; } }
Generic helper method to use for Error sub-typing

@param {Object}
obj - the object upon which to define Error properties
@param {String}
name - the sub-type Error object name
@param {String}
message - Human-readable description of the error
Generic helper method to use for Error sub - typing