Where the error is set we have the following comment: 
```
            // If anything failed at all, we need to rollback, so that we do not
            // have an inconsistent state between aggregate and constituent contacts
```
So, the spec would allow us to effect the writes for valid contacts and return errors only for the failed ones, but we override this to ensure that there is no discrepancy between aggregates and their constituents.