| 123456789101112131415161718192021222324252627282930313233343536 | 
							- 'use strict'
 
- module.exports = inflight
 
- let Bluebird
 
- try {
 
-   Bluebird = require('bluebird')
 
- } catch (_) {
 
-   Bluebird = Promise
 
- }
 
- const active = {}
 
- inflight.active = active
 
- function inflight (unique, doFly) {
 
-   return Bluebird.all([unique, doFly]).then(function (args) {
 
-     const unique = args[0]
 
-     const doFly = args[1]
 
-     if (Array.isArray(unique)) {
 
-       return Bluebird.all(unique).then(function (uniqueArr) {
 
-         return _inflight(uniqueArr.join(''), doFly)
 
-       })
 
-     } else {
 
-       return _inflight(unique, doFly)
 
-     }
 
-   })
 
-   function _inflight (unique, doFly) {
 
-     if (!active[unique]) {
 
-       active[unique] = (new Bluebird(function (resolve) {
 
-         return resolve(doFly())
 
-       }))
 
-       active[unique].then(cleanup, cleanup)
 
-       function cleanup() { delete active[unique] }
 
-     }
 
-     return active[unique]
 
-   }
 
- }
 
 
  |