code: function TypeError (msg, spec, value) {
    const e = Error(msg)
    return Object.assign(e, { spec, value })
  }
docs: Construct Error with additional type information (not thrown)
  @rtype (msg: String, spec: String, value: String) => Error
  @param {String} msg - Error message
  @param {String} spec
  @param {String} value
  @return {Error} Enhanced Error