{"_id":"run-auto","_rev":"175485","name":"run-auto","description":"Determine the best order for running async functions, and run them","dist-tags":{"latest":"2.0.4"},"maintainers":[{"name":"feross","email":""}],"time":{"modified":"2021-06-03T11:57:13.000Z","created":"2014-04-14T02:39:42.879Z","2.0.4":"2020-10-27T03:35:37.965Z","2.0.3":"2018-04-26T01:08:14.702Z","2.0.2":"2018-04-26T01:05:33.663Z","2.0.1":"2018-03-15T18:16:00.916Z","2.0.0":"2016-05-18T02:41:40.855Z","1.1.3":"2015-06-24T07:43:43.709Z","1.1.2":"2015-05-05T00:54:57.102Z","1.1.1":"2015-03-23T22:00:58.599Z","1.1.0":"2015-03-20T00:49:32.489Z","1.0.0":"2014-04-29T10:20:58.519Z","0.1.0":"2014-04-14T02:39:42.879Z"},"users":{"tyandell":true,"feross":true,"bret":true,"koulmomo":true},"author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"https://feross.org"},"repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"versions":{"2.0.4":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"2.0.4","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"https://feross.org"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.3"},"devDependencies":{"airtap":"^3.0.0","standard":"*","tape":"^5.0.1"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"airtap -- test/*.js","test-browser-local":"airtap --local -- test/*.js","test-node":"tape test/*.js"},"funding":[{"type":"github","url":"https://github.com/sponsors/feross"},{"type":"patreon","url":"https://www.patreon.com/feross"},{"type":"consulting","url":"https://feross.org/support"}],"gitHead":"5bacfb071f3ad49816a7a5c84d81abbdab41d548","_id":"run-auto@2.0.4","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"shasum":"e052177e073c3ed1817c79d7d64666b8497605a0","size":4146,"noattachment":false,"key":"/run-auto/-/run-auto-2.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-2.0.4.tgz"},"maintainers":[{"name":"feross","email":""}],"_npmUser":{"name":"feross","email":"feross@feross.org"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-auto_2.0.4_1603769737763_0.6126922983951195"},"_hasShrinkwrap":false,"publish_time":1603769737965,"_cnpm_publish_time":1603769737965},"2.0.3":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"2.0.3","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"airtap":"0.0.4","standard":"*","tape":"^4.0.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"airtap -- test/*.js","test-browser-local":"airtap --local -- test/*.js","test-node":"tape test/*.js"},"gitHead":"c685213f88f2ad72a40a19f15415978df12672e1","_id":"run-auto@2.0.3","_npmVersion":"6.0.0","_nodeVersion":"8.11.1","_npmUser":{"name":"feross","email":"feross@feross.org"},"dist":{"shasum":"d5caaa61b458dbd08f49b913a1ad64f5b5db4952","size":4035,"noattachment":false,"key":"/run-auto/-/run-auto-2.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-2.0.3.tgz"},"maintainers":[{"name":"feross","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-auto_2.0.3_1524704894601_0.6225527222883163"},"_hasShrinkwrap":false,"publish_time":1524704894702,"_cnpm_publish_time":1524704894702},"2.0.2":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"2.0.2","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"airtap":"0.0.4","standard":"*","tape":"^4.0.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"airtap -- test/*.js","test-browser-local":"airtap --local -- test/*.js","test-node":"tape test/*.js"},"gitHead":"69b87724f10c5d529451f6c61090bb62f0551bb5","_id":"run-auto@2.0.2","_npmVersion":"6.0.0","_nodeVersion":"8.11.1","_npmUser":{"name":"feross","email":"feross@feross.org"},"dist":{"shasum":"ad947bc118c0a3949a398088a965dc831cb38f04","size":4024,"noattachment":false,"key":"/run-auto/-/run-auto-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-2.0.2.tgz"},"maintainers":[{"name":"feross","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-auto_2.0.2_1524704733608_0.7687780300390568"},"_hasShrinkwrap":false,"publish_time":1524704733663,"_cnpm_publish_time":1524704733663},"2.0.1":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"2.0.1","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"airtap":"0.0.4","standard":"*","tape":"^4.0.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"airtap -- test/*.js","test-browser-local":"airtap --local -- test/*.js","test-node":"tape test/*.js"},"gitHead":"0b3f974b258e23a0d1a915ee88100f4629363a93","_id":"run-auto@2.0.1","_npmVersion":"5.7.1","_nodeVersion":"8.10.0","_npmUser":{"name":"feross","email":"feross@feross.org"},"dist":{"shasum":"2228cc789e9cd071333df576e863e743a520c04a","size":5224,"noattachment":false,"key":"/run-auto/-/run-auto-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-2.0.1.tgz"},"maintainers":[{"name":"feross","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/run-auto_2.0.1_1521137760834_0.3256341560456961"},"_hasShrinkwrap":false,"publish_time":1521137760916,"_cnpm_publish_time":1521137760916},"2.0.0":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"2.0.0","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"standard":"^7.0.0","tape":"^4.0.0","zuul":"^3.1.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"zuul -- test/*.js","test-browser-local":"zuul --local -- test/*.js","test-node":"tape test/*.js"},"gitHead":"9263ae17bb3b43babc64d25c4e4aea73ddbc42e3","_id":"run-auto@2.0.0","_shasum":"5f4353f58adbd6b74926489b4f259e1dad6a78d6","_from":".","_npmVersion":"2.15.5","_nodeVersion":"6.1.0","_npmUser":{"name":"feross","email":"feross@feross.org"},"dist":{"shasum":"5f4353f58adbd6b74926489b4f259e1dad6a78d6","size":10528,"noattachment":false,"key":"/run-auto/-/run-auto-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-2.0.0.tgz"},"maintainers":[{"name":"feross","email":""}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/run-auto-2.0.0.tgz_1463539300322_0.6972676436416805"},"directories":{},"publish_time":1463539300855,"_cnpm_publish_time":1463539300855,"_hasShrinkwrap":false},"1.1.3":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"1.1.3","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"standard":"^4.3.2","tape":"^4.0.0","zuul":"^3.1.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && npm run test-node && npm run test-browser","test-browser":"zuul -- test/*.js","test-browser-local":"zuul --local -- test/*.js","test-node":"tape test/*.js"},"gitHead":"c8e8035146db6a4d526db67297b8552c734aab5a","_id":"run-auto@1.1.3","_shasum":"c2d5163fec1ab78b6345cdd3992fce032f671f88","_from":".","_npmVersion":"2.11.3","_nodeVersion":"2.3.1","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"dist":{"shasum":"c2d5163fec1ab78b6345cdd3992fce032f671f88","size":10446,"noattachment":false,"key":"/run-auto/-/run-auto-1.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-1.1.3.tgz"},"directories":{},"publish_time":1435131823709,"_cnpm_publish_time":1435131823709,"_hasShrinkwrap":false},"1.1.2":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"1.1.2","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"standard":"^3.2.0","tape":"^4.0.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && tape test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/9..latest","chrome/25..latest","chrome/canary","firefox/20..latest","firefox/nightly","safari/6..latest","opera/12..latest","opera/next","ipad/6.0..latest","iphone/6.0..latest","android-browser/4.2..latest"]},"gitHead":"b1e77f05da0d8fe62c07b8015dc57c24a873a2c6","_id":"run-auto@1.1.2","_shasum":"1c05aef58b8821e1925113889dad96831d53e688","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"dist":{"shasum":"1c05aef58b8821e1925113889dad96831d53e688","size":9976,"noattachment":false,"key":"/run-auto/-/run-auto-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-1.1.2.tgz"},"directories":{},"publish_time":1430787297102,"_cnpm_publish_time":1430787297102,"_hasShrinkwrap":false},"1.1.1":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"1.1.1","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"standard":"^3.2.0","tape":"^3.5.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && tape test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/9..latest","chrome/25..latest","chrome/canary","firefox/20..latest","firefox/nightly","safari/6..latest","opera/12..latest","opera/next","ipad/6.0..latest","iphone/6.0..latest","android-browser/4.2..latest"]},"gitHead":"c3772d04a65faef8a60a1073ce00a4599ee4ca46","_id":"run-auto@1.1.1","_shasum":"62cef9f229fd3e5360b39a8fc890c371d05cc464","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.1","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"dist":{"shasum":"62cef9f229fd3e5360b39a8fc890c371d05cc464","size":9968,"noattachment":false,"key":"/run-auto/-/run-auto-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-1.1.1.tgz"},"directories":{},"publish_time":1427148058599,"_cnpm_publish_time":1427148058599,"_hasShrinkwrap":false},"1.1.0":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"1.1.0","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{"dezalgo":"^1.0.1"},"devDependencies":{"standard":"^3.2.0","tape":"^3.5.0"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"standard && tape test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/9..latest","chrome/25..latest","chrome/canary","firefox/20..latest","firefox/nightly","safari/6..latest","opera/12..latest","opera/next","ipad/6.0..latest","iphone/6.0..latest","android-browser/4.2..latest"]},"gitHead":"09537b3edcea50361528fdf4cd2752608d955444","_id":"run-auto@1.1.0","_shasum":"d0ad67caa158091d25cee14da38c5e716144b906","_from":".","_npmVersion":"2.7.0","_nodeVersion":"1.5.1","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"dist":{"shasum":"d0ad67caa158091d25cee14da38c5e716144b906","size":9966,"noattachment":false,"key":"/run-auto/-/run-auto-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-1.1.0.tgz"},"directories":{},"publish_time":1426812572489,"_cnpm_publish_time":1426812572489,"_hasShrinkwrap":false},"1.0.0":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"1.0.0","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{},"devDependencies":{"tape":"^2.12.3"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"tape test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/9..latest","chrome/25..latest","chrome/canary","firefox/20..latest","firefox/nightly","safari/6..latest","opera/12..latest","opera/next","ipad/6.0..latest","iphone/6.0..latest","android-browser/4.2..latest"]},"_id":"run-auto@1.0.0","dist":{"shasum":"bfcf0ee04252c044aa06f88e8363ea08d6d8901f","size":9828,"noattachment":false,"key":"/run-auto/-/run-auto-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-1.0.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"directories":{},"publish_time":1398766858519,"_cnpm_publish_time":1398766858519,"_hasShrinkwrap":false},"0.1.0":{"name":"run-auto","description":"Determine the best order for running async functions, and run them","version":"0.1.0","author":{"name":"Feross Aboukhadijeh","email":"feross@feross.org","url":"http://feross.org/"},"bugs":{"url":"https://github.com/feross/run-auto/issues"},"dependencies":{},"devDependencies":{"tape":"^2.12.3"},"homepage":"https://github.com/feross/run-auto","keywords":["auto","async","function","callback","asynchronous","run","array","run auto","order","async.auto"],"license":"MIT","main":"index.js","repository":{"type":"git","url":"git://github.com/feross/run-auto.git"},"scripts":{"test":"tape test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/9..latest","chrome/25..latest","chrome/canary","firefox/20..latest","firefox/nightly","safari/6..latest","opera/12..latest","opera/next","ipad/6.0..latest","iphone/6.0..latest","android-browser/4.2..latest"]},"_id":"run-auto@0.1.0","dist":{"shasum":"d2bda9277928d29e3d2ff681ed8c0e5b79e3df1a","size":9793,"noattachment":false,"key":"/run-auto/-/run-auto-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/run-auto/download/run-auto-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"feross","email":"feross@feross.org"},"maintainers":[{"name":"feross","email":""}],"directories":{},"publish_time":1397443182879,"_cnpm_publish_time":1397443182879,"_hasShrinkwrap":false}},"readme":"# run-auto [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]\n\n[travis-image]: https://img.shields.io/travis/feross/run-auto/master.svg\n[travis-url]: https://travis-ci.org/feross/run-auto\n[npm-image]: https://img.shields.io/npm/v/run-auto.svg\n[npm-url]: https://npmjs.org/package/run-auto\n[downloads-image]: https://img.shields.io/npm/dm/run-auto.svg\n[downloads-url]: https://npmjs.org/package/run-auto\n[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg\n[standard-url]: https://standardjs.com\n\n#### Determine the best order for running async functions, ***LIKE MAGIC!***\n\n![auto](https://raw.githubusercontent.com/feross/run-auto/master/img.png) [![Sauce Test Status](https://saucelabs.com/browser-matrix/run-auto.svg)](https://saucelabs.com/u/run-auto)\n\n### install\n\n```\nnpm install run-auto\n```\n\n### usage\n\n#### auto(tasks, [callback])\n\nDetermines the best order for running the functions in `tasks`, based on their\nrequirements. Each function can optionally depend on other functions being completed\nfirst, and each function is run as soon as its requirements are satisfied.\n\nIf any of the functions pass an error to their callback, the `auto` sequence will\nstop. Further tasks will not execute (so any other functions depending on it will\nnot run), and the main `callback` is immediately called with the error.\n\nFunctions also receive an object containing the results of functions which have\ncompleted so far as the first argument, if they have dependencies. If a task\nfunction has no dependencies, it will only be passed a callback.\n\n##### arguments\n\n- `tasks` - An object. Each of its properties is either a function or an array of requirements, with the function itself the last item in the array. The object's key of a property serves as the name of the task defined by that property, i.e. can be used when specifying requirements for other tasks. The function receives one or two arguments:\n  - a `results` object, containing the results of the previously executed functions, only passed if the task has any dependencies, **Argument order changed in 2.0**\n  - a `callback(err, result)` function, which must be called when finished, passing an `error` (which can be `null`) and the result of the function's execution. **Argument order changed in 2.0**\n- `callback(err, results)` - An optional callback which is called when all the tasks have been completed. It receives the `err` argument if any `tasks` pass an error to their callback. Results are always returned; however, if an error occurs, no further `tasks` will be performed, and the results object will only contain partial results.\n\n##### example\n\n```js\nvar auto = require('run-auto')\n\nauto({\n  getData: function (callback) {\n    console.log('in getData')\n    // async code to get some data\n    callback(null, 'data', 'converted to array')\n  },\n  makeFolder: function (callback) {\n    console.log('in makeFolder')\n    // async code to create a directory to store a file in\n    // this is run at the same time as getting the data\n    callback(null, 'folder')\n  },\n  writeFile: ['getData', 'makeFolder', function (results, callback) {\n    console.log('in writeFile', JSON.stringify(results))\n    // once there is some data and the directory exists,\n    // write the data to a file in the directory\n    callback(null, 'filename')\n  }],\n  emailLink: ['writeFile', function (results, callback) {\n    console.log('in emailLink', JSON.stringify(results))\n    // once the file is written let's email a link to it...\n    // results.writeFile contains the filename returned by writeFile.\n    callback(null, { file: results.writeFile, email: 'user@example.com' })\n  }]\n}, function(err, results) {\n  console.log('err = ', err)\n  console.log('results = ', results)\n})\n```\n\n#### usage note\n\nNote, all functions are called with a `results` object as a second argument, so it is\nunsafe to pass functions in the` tasks` object which cannot handle the extra argument.\n\nFor example, this snippet of code:\n\n```js\nauto({\n  readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback)\n```\n\nwill have the effect of calling `readFile` with the results object as the last argument,\nwhich will fail, like this:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {})\n```\n\nInstead, wrap the call to `readFile` in a function which does not forward the `results`\nobject:\n\n```js\nauto({\n  readData: function (cb, results) {\n    fs.readFile('data.txt', 'utf-8', cb)\n  }\n}, callback)\n```\n\nThis module is basically equavalent to\n[`async.auto`](https://github.com/caolan/async#autotasks-callback), but it's\nhandy to just have the one function you need instead of the kitchen sink. Modularity!\nEspecially handy if you're serving to the browser and need to reduce your javascript\nbundle size.\n\nWorks great in the browser with [browserify](http://browserify.org/)!\n\n### see also\n\n- [run-parallel](https://github.com/feross/run-parallel)\n- [run-parallel-limit](https://github.com/feross/run-parallel-limit)\n- [run-series](https://github.com/feross/run-series)\n- [run-waterfall](https://github.com/feross/run-waterfall)\n\n### license\n\nMIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).\n\nImage credit: Wizard Hat designed by Andrew Fortnum\n","_attachments":{},"homepage":"https://github.com/feross/run-auto","bugs":{"url":"https://github.com/feross/run-auto/issues"},"license":"MIT"}