lib/tryEach.js
/**
 * It runs each task in series but stops whenever any of the functions were
 * successful. If one of the tasks were successful, the `callback` will be
 * passed the result of the successful task. If all tasks fail, the callback
 * will be passed the error and result (if any) of the final attempt.
 *
 * @name tryEach
 * @static
 * @memberOf module:ControlFlow
 * @method
 * @category Control Flow
 * @param {Array|Iterable|Object} tasks - A collection containing functions to
 * run, each function is passed a `callback(err, result)` it must call on
 * completion with an error `err` (which can be `null`) and an optional `result`
 * value.
 * @param {Function} [callback] - An optional callback which is called when one
 * of the tasks has succeeded, or all have failed. It receives the `err` and
 * `result` arguments of the last attempt at completing the `task`. Invoked with
 * (err, results).
 * @example
 * async.tryEach([
 *     function getDataFromFirstWebsite(callback) {
 *         // Try getting the data from the first website
 *         callback(err, data);
 *     },
 *     function getDataFromSecondWebsite(callback) {
 *         // First website failed,
 *         // Try getting the data from the backup website
 *         callback(err, data);
 *     }
 * ],
 * // optional callback
 * function(err, results) {
 *     Now do something with the data.
 * });
 *
 */
It runs each task in series but stops whenever any of the functions were
successful. If one of the tasks were successful, the `callback` will be
passed the result of the successful task. If all tasks fail, the callback
will be passed the error and result (if any) of the final attempt.


It runs each task in series but stops whenever any of the functions were successful . If one of the tasks were successful the ` callback ` will be passed the result of the successful task . If all tasks fail the callback will be passed the error and result ( if any ) of the final attempt .
function tryEach(tasks, callback) {
    var error = null;
    var result;
    callback = callback || noop;
    eachSeries(tasks, (task, taskCb) => {
        wrapAsync(task)((err, ...args) => {
            if (args.length < 2) {
                [result] = args;
            } else {
                result = args;
            }
            error = err;
            taskCb(err ? null : {});
        });
    }, () => callback(error, result));
}
function tryEach ( tasks , callback ) { var error = null ; var result ; callback = callback || noop ; eachSeries ( tasks , ( task , taskCb ) => { wrapAsync ( task ) ( ( err , ... args ) => { if ( args . length < 2 ) { [ result ] = args ; } else { result = args ; } error = err ; taskCb ( err ? null : { } ) ; } ) ; } , ( ) => callback ( error , result ) ) ; }
It runs each task in series but stops whenever any of the functions were
 successful.
It runs each task in series but stops whenever any of the functions were successful .