add(...fn) {
			queue.push(...fn);
			if (!running) {
				return next();
			}
			return Promise.resolve();
		}
@param {Array<() => unknown>}  fn
 @returns {Promise<void>} Promise resolves when the queue has emptied; will throw if an error is encountered