|                                                   |  | /*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */module.exports = runParallel
const queueMicrotask = require('queue-microtask')
function runParallel (tasks, cb) {  let results, pending, keys  let isSync = true
  if (Array.isArray(tasks)) {    results = []    pending = tasks.length  } else {    keys = Object.keys(tasks)    results = {}    pending = keys.length  }
  function done (err) {    function end () {      if (cb) cb(err, results)      cb = null    }    if (isSync) queueMicrotask(end)    else end()  }
  function each (i, err, result) {    results[i] = result    if (--pending === 0 || err) {      done(err)    }  }
  if (!pending) {    // empty
    done(null)  } else if (keys) {    // object
    keys.forEach(function (key) {      tasks[key](function (err, result) { each(key, err, result) })    })  } else {    // array
    tasks.forEach(function (task, i) {      task(function (err, result) { each(i, err, result) })    })  }
  isSync = false}
 |