In the OData v4 transport, batch submit treats a top-level HTTP 200 response as success, even when one or more operations fail. This is due to how the changesets function.
The parseBatchResponse function, which is called by the success callback belonging to the submit function of your OData v4 transport, as well as further processing in the same success callback. No attempt is made at handling anything other than responses having status codes [200... 299].
Please enhance batch handling so inner change set failures trigger explicit client error handling.