%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
const defLimit = require('os').cpus().length const callLimit = (queue, limit = defLimit) => new Promise((res, rej) => { let active = 0 let current = 0 const results = [] let rejected = false const reject = er => { if (rejected) return rejected = true rej(er) } let resolved = false const resolve = () => { if (resolved || active > 0) return resolved = true res(results) } const run = () => { const c = current++ if (c >= queue.length) { return resolve() } active ++ results[c] = queue[c]().then(result => { active -- results[c] = result run() return result }, reject) } for (let i = 0; i < limit; i++) { run() } }) module.exports = callLimit