Welding something to character on start is being destroyed?

I’m trying to parent a model to players hand when they join, however it’s being destroyed for some reason?

_Trove:Connect(player.CharacterAdded, function(character)
	local Phone = Assets.Phones[Data.EquippedPhone]:Clone()
	Phone.Name = "Phone"

	Phone:PivotTo(character.RightHand:GetPivot())

	-- Set all parts
	for _, part in Phone:GetDescendants() do
		if not part:IsA("BasePart") then
			continue
		end

		part.Anchored = false
		part.CanCollide = false
		part.CanTouch = false
		part.CanQuery = false
		part.Massless = true

		if part.Name == "Handle" then
			Library:Weld(part, character.RightHand)
		else
			Library:Weld(part, Phone.Handle)
		end
	end

	Phone.Parent = character
end)

I’m doing this

task.spawn(function()
			while Phone.Parent do
				print(Phone.Parent)
				task.wait()
			end
		end)

which prints that it’s inside the character, until it stops, before the character has fully loaded