I always use player maps and have events to account for the player leaving ie break loops ect. I never fully use the GetPlayspace().GetPlayers as i believe the player who initially joined will always be in this returned array. iirc this never gets cleaned for players who left.
I have a Event that basically terminates everything to do with the player when they leave/removes from maps arrays ect ect but the Playerspace() im sure it isnt updated so if your using this alot then this could be your issue
Example
PlayerLeaveServerEvent:event(player) = event(player){}