docs: function () {
  		var len = arguments.length,
  			msg, errorObj
  		if (len === 1 && typeof arguments[0] === 'function') {
  			// error(fn) -> Function
  			return intercept(arguments[0], error, true)
  		} else if (len > 0 && !that._enableErrorCode && typeof arguments[0] === 'string') {
  			// error(str, ?obj)
  			msg = arguments[0]
  			errorObj = new that._errorClass(msg)
  			Object.assign(errorObj, arguments[1])
  			throw errorObj
  		} else if (len > 1 && that._enableErrorCode && typeof arguments[1] === 'string') {
  			// error(code, str, ?obj)
  			msg = arguments[1]
  			errorObj = new that._errorClass(msg)
  			errorObj.code = arguments[0]
  			Object.assign(errorObj, arguments[2])
  			throw errorObj
  		} else if (len > 2 && that._enableErrorCode && typeof arguments[2] === 'string') {
  			// error (HTTPStatusCode, code, str, ?obj)
  			msg = arguments[2]
  			errorObj = new that._errorClass(msg)
  			errorObj.HTTPStatusCode = arguments[0]
  			errorObj.code = arguments[1]
  			Object.assign(errorObj, arguments[3])
  			throw errorObj
  		} else {
  			// error(x, ?obj)
  			errorObj = arguments[0]
  			Object.assign(errorObj, arguments[1])
  			throw errorObj
  		}
  	}