JavaScript .map em uma matriz e remover itens se a condição for atendida

Eu tenho uma matrizqueue que eu empurro objetos para ele quando são modificados. Se o usuário pressionarsave, então percorrerei oqueue e aplique a chamada de API apropriada para eles.

Se a chamada da API for concluída com êxito, desejo remover o item doqueue, caso contrário, mantenha-o dentro e notifique o usuário de que alguns itens não foram salvos com sucesso. Atualmente, tenho isso (no AngularJS)

var unsuccessfu,lItems = [];
var promise = queue.map(function(item) {
    var defer = $q.defer();
    myCallFunction( item
           , function( response ) {} // Success
           , function( response ) {  // Error
               unsuccessfulItems.push(item);
           }
    )
    defer.resolve();
    return defer.promise;
})
// Once all items have been processed
$q.all( promise ).then( function() {
    queue = unsuccessfulItems;
});

Existe um jeito melhor de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion