When you destroy a derived object using a base pointer and the destructor is not virtual you end up in an "undefined behaviour" scenario.
N3690, 5.3.5 [expr.delete] - 3
In the first alternative (delete object), if the static type of the object to be deleted is different from its dynamic type, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined
The explanation give in that github repository is just plain wrong ("the derived destructor is not called but no memory leak occurs"). You cannot count on that.
I didn't read the rest because it would be a waste of time. UB is UB... trying to describe the undefined is nonsense.