fetch-fic
Version:
Package up delicious, delicious fanfic from various sources into epub ebooks ready for reading in your ereader of choice.
27 lines (22 loc) • 662 B
JavaScript
module.exports = inFlight
const Bluebird = require('bluebird')
const active = {}
function inFlight () {
return Bluebird.all(arguments).spread(function (unique, doFly) {
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] = Bluebird.resolve(doFly.apply(null, Array.prototype.slice(arguments, 2)))
.finally(function () { delete active[unique] })
}
return active[unique]
}
}