code: function errnoException(err, syscall, original) {
    // TODO(joyeecheung): We have to use the type-checked
    // getSystemErrorName(err) to guard against invalid arguments from users.
    // This can be replaced with [ code ] = errmap.get(err) when this method
    // is no longer exposed to user land.
    if (util === undefined) util = require('util');
    const code = util.getSystemErrorName(err);
    const message = original ?
      `${syscall} ${code} ${original}` : `${syscall} ${code}`;
  
    // eslint-disable-next-line no-restricted-syntax
    const ex = new Error(message);
    // TODO(joyeecheung): errno is supposed to err, like in uvException
    ex.code = ex.errno = code;
    ex.syscall = syscall;
  
    Error.captureStackTrace(ex, errnoException);
    return ex;
  }
docs: This used to be util._errnoException().
  
  @param {number} err - A libuv error number
  @param {string} syscall
  @param {string} [original]
  @returns {Error}