function consoleFunc(name) {
    return function (fn/*, ...args*/) {
        var args = slice(arguments, 1);
        args.push(function (err/*, ...args*/) {
            var args = slice(arguments, 1);
            if (typeof console === 'object') {
                if (err) {
                    if (console.error) {
                        console.error(err);
                    }
                } else if (console[name]) {
                    arrayEach(args, function (x) {
                        console[name](x);
                    });
                }
            }
        });
        wrapAsync(fn).apply(null, args);
    };
}
The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time.

@name detectSeries
@static
@memberOf module:Collections
@method
@see [async.detect]{@link module:Collections.detect}
@alias findSeries
@category Collections
@param {Array|Iterable|Object} coll - A collection to iterate over.
@param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.
The iteratee must complete with a boolean value as its result.
Invoked with (item, callback).
@param {Function} [callback] - A callback which is called as soon as any
iteratee returns `true`, or after all the `iteratee` functions have finished.
Result will be the first item in the array that passes the truth test
(iteratee) or the value `undefined` if none passed. Invoked with
(err, result).