Nil teams are set as the player's previous team

Here’s the hierarchy for each of my teams. The only ‘AutoAssignable’ team is Spectator.

Screenshot_1

I currently have a script that sets the player’s team to nil upon joining which works fine. However, when switching the player’s team from nil to Team1, it prints this:

16:42:27 → game.Players.Auxicon.Team = game.Teams.Team1
16:42:27 – Spectator
16:42:27 – Team1

Example script used:

Player:GetPropertyChangedSignal("Team"):Connect(function()
     if player.Team == game:GetService("Teams"):WaitForChild("Spectator") then
          print(player.Team.Name)
     elseif player.Team then
          print(player.Team.Name)
     end
end)

How do I get around this without creating a new team? I have already tried checking if the player was Neutral to no avail.