Prevent the endOrDelete method (which is called from the deleting observer) from dropping back into the model observer when it updates.
If a temporal object should be ended instead of deleted, the end date update was actually being called on the object. This would cause the object to drop back into the updating observer which could get stuck in a loop. Now we are just doing the end date update on a query builder so that it does not trigger the event again.
Can look at cleaning this code up in the future.