function promiseCallback () {
        let resolve, reject;
        function callback (err, ...args) {
            if (err) return reject(err)
            resolve(args.length > 1 ? args : args[0]);
        }

        callback[PROMISE_SYMBOL] = new Promise((res, rej) => {
            resolve = res,
            reject = rej;
        });

        return callback
    }
The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time.

@name applyEachSeries
@static
@memberOf module:ControlFlow
@method
@see [async.applyEach]{@link module:ControlFlow.applyEach}
@category Control Flow
@param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all
call with the same arguments
@param {...*} [args] - any number of separate arguments to pass to the
function.
@param {Function} [callback] - the final argument should be the callback,
called when all functions have completed processing.
@returns {AsyncFunction} - A function, that when called, is the result of
appling the `args` to the list of functions.  It takes no args, other than
a callback.