| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 'use strict';const pTry = require('p-try');module.exports = concurrency => {	if (concurrency < 1) {		throw new TypeError('Expected `concurrency` to be a number from 1 and up');	}	const queue = [];	let activeCount = 0;	const next = () => {		activeCount--;		if (queue.length > 0) {			queue.shift()();		}	};	return fn => new Promise((resolve, reject) => {		const run = () => {			activeCount++;			pTry(fn).then(				val => {					resolve(val);					next();				},				err => {					reject(err);					next();				}			);		};		if (activeCount < concurrency) {			run();		} else {			queue.push(run);		}	});};
 |