| 'use strict'; | 
| // Older verions of Node.js might not have `util.getSystemErrorName()`. | 
| // In that case, fall back to a deprecated internal. | 
| const util = require('util'); | 
|   | 
| let uv; | 
|   | 
| if (typeof util.getSystemErrorName === 'function') { | 
|     module.exports = util.getSystemErrorName; | 
| } else { | 
|     try { | 
|         uv = process.binding('uv'); | 
|   | 
|         if (typeof uv.errname !== 'function') { | 
|             throw new TypeError('uv.errname is not a function'); | 
|         } | 
|     } catch (err) { | 
|         console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err); | 
|         uv = null; | 
|     } | 
|   | 
|     module.exports = code => errname(uv, code); | 
| } | 
|   | 
| // Used for testing the fallback behavior | 
| module.exports.__test__ = errname; | 
|   | 
| function errname(uv, code) { | 
|     if (uv) { | 
|         return uv.errname(code); | 
|     } | 
|   | 
|     if (!(code < 0)) { | 
|         throw new Error('err >= 0'); | 
|     } | 
|   | 
|     return `Unknown system error ${code}`; | 
| } |