Недавно делал что-то подобное. Как-то так:
const cmd = require('node-cmd-promise');
const array = ['google.ru', 'yandex.ru', 'habrahabr.ru', 'yana.ru']
const promisesArray = array.map((url) => {
return cmd(`ping ${array[i]}`)
.then((pingResult) => Promise.resolve(pingResult))
.catch(error => {
console.error(error);
return Promise.resolve(null);
})
});
Promise.all(promisesArray).then((result) => {
const finished = result.filter(result => result !== null);
console.log('succesfully pinged: ', finished);
})
Идея в том, чтобы перехватить реджекнутый промиз и вместо него вернуть Promise.resolve с каким-то значением.
Возможно, есть какой-то более изящный вариант, но я так и не додумался.