O que acontece com $ q.all () quando algumas chamadas funcionam e outras falham?

O que acontece com $ q.all () quando algumas chamadas funcionam e outras falham?

Eu tenho o seguinte código:

    var entityIdColumn = $scope.entityType.toLowerCase() + 'Id';
    var requests = $scope.grid.data
      .filter(function (rowData, i) {
          return !angular.equals(rowData, $scope.grid.backup[i]);
      })
      .map(function (rowData, i) {
          var entityId = rowData[entityIdColumn];
          return $http.put('/api/' + $scope.entityType + '/' + entityId, rowData);
      });
    $q.all(requests).then(function (allResponses) {
        //if all the requests succeeded, this will be called, and $q.all will get an
        //array of all their responses.
        console.log(allResponses[0].data);
    }, function (error) {
        //This will be called if $q.all finds any of the requests erroring.
        var abc = error;
        var def = 99;
    });

Quando todas as chamadas $ http funcionam, a matriz allResponses é preenchida com dados.

Quando um falhar, entendo que a segunda função será chamada e a variável de erro será fornecida com detalhes.

No entanto, alguém pode me ajudar a explicar o que acontece se algumas das respostas funcionam e outras falham?