code: function RequestError(options) {
  
      var defaults = {
          code: HttpStatusCodes.BAD_REQUEST,
          apiCode: null,
          message: 'Bad Request',
          desc: 'Invalid or insufficient request data. Please modify the request in order to proceed',
      };
  
      if (typeof options === 'string') {
          options = {message: options};
      }
  
      options = _.assign(defaults, options);
  
      Error.call(this); //super constructor
      Error.captureStackTrace(this, this.constructor);
  
      this.desc     = options.desc;
      this.name     = this.constructor.name;
      /**
       * @name RequestError#code
       * @instance
       * @type {Number}
       */
      this.code     = options.code;
      this.apiCode  = options.apiCode;
      /**
       * @name RequestError#message
       * @instance
       * @type {String}
       */
      this.message  = options.message;
      this.uid      = null;
  }
docs: Fundamental request error. An application always responds on a request with
  an error that is instance of {@link RequestError} (in case an error has been encoutered).
  Errors encountered which are NOT instance of {@link RequestError}
  will be converted before further processing so that the condition is met.
  
  @param {Object|String} [options] options object or string message value
  @param {Integer}       [options.code=400] - applies only when `apiCode` option is not set
  @param {String}        [options.apiCode]
  @param {message}       [options.message='Bad Request']
  @param {message}       [options.desc] - description for swagger doc spec - is intended to be used in child Error constructor only
  
  @constructor
  @extends Error