docs: function lsofi (port) {
    if (typeof port === 'undefined') {
      return Promise.reject(new TypeError('missing required input parameter port'))
    }
  
    if (!num(port)) {
      return Promise.reject(new TypeError('port must be numeric value'))
    }
  
    const command = isWindows
      ? ['netstat.exe', '-a', '-n', '-o']
      : ['lsof', `-i:${port}`]
  
    const columns = isWindows
      ? [null, 'remote', 'local', null, 'pid']
      : [null, 'pid', null, null, null, null, null, null, null]
  
    const filter = isWindows
      ? windowsFilter(port)
      : unixFilter(port)
  
    const transform = collate(columns, filter)
    const parser = through2.obj(function (chunk, enc, cb) {
      transform.call(this, chunk, cb)
    })
  
    return new Promise((resolve, reject) => {
      parser.on('data', chunk => resolve(chunk)) // bail as soon as possible
      parser.on('end', chunk => resolve(null)) // nothing found
      parser.on('error', error => reject(error)) // burp
  
      const child = childProcess.spawn(command[0], command.slice(1))
  
      child.stdout
        .pipe(breaklines()) // break buffer chunks into lines
        .pipe(breakwords()) // break line strings into words
        .pipe(parser)
    })
  }