You could try using the player disconnect hook instead:
hook.Add( 'PlayerDisconnected', self, function( ply )
if self:GetOwner() == ply then
That would probably work (someone correct me if I’m wrong)
Also, it might not have worked in your original code because you were doing
When self IS an entity already, so you don’t need the .Entity part
Also, how is:
Meant to work? Are you defining self.Owner anywhere before calling that?