If you actually test it instead of just guessing you would see that no entities are leaked, the code you posted even confirms that just by looking at the end of DoRemove where it has a null check for the held entity and logs a warning if it still exists so I refer you back to my previous statement of don't talk shit.
It would have taken you 2 minutes to work out if what you were assuming was actually true, but instead for what ever reason you decided to peddle your assumption as a fact and then argued your point. Don't be that guy