We have three process definitions, A and B, where B is invoked by A using a call activity; and C, which is invoked by B, and simply ends the process with an ErrorEndEvent with error code "error".
In A, we have an Event Sub-Process with an ErrorStartEvent with Error Code "error". In B, we also have an Event Sub-Process with an ErrorStartEvent with the same error code, but at the end of the sub-process, we use an ErrorEndEvent to re-throw the error, in order to trigger the Event Sub-Process of A.
This, however, produces an infinite loop. In other words, instead of propagating the ErrorEndEvent from process B to A, it re-throws the error back to B, ultimately leading to a StackOverflowError. Making an analogy with Java exceptions, what we have is the following:
But instead of the error being propagated to A, it simply is re-thrown back to Event Sub-Process in B, resulting in an infinite loop.
Attached, you can find a testcase where processes A, B, and C, correspond to Parent.bpmn, Child.bpmn, and Throwing.bpmn, respectively.