I understand your point now, you are right RequestLifeCycle.end() doesn't seem to be used properly everywhere as we never check if an exception has been raised. Frankly speaking, I did not even realize that this method even returns something as the return value is not even unit tested as far as I can see in the kernel.
RequestLifeCycle.end() is called in many places in the code so if we decided to change the logic to manage it "properly", it could be considered as a massive behavior change so I don't thing that it is doable in a maintenance branch but I guess it can be done in the future versions.
Feel free to create a JIRA issue in the eXo WS project, I will see what I can do for eXo JCR 1.16.
Thanks for the feedback