Blocks/Units randomly disseapring

I’m trying to make a tower defense game and for some reason some units just randomly dissapear.
I use lerp to go between points.
I know it’s not connected to network ownership but i know my current code is intensive but it doesn’t always remove units under high stress.

External Media
local enemy = {}
local waypoints = workspace.Waypoints
local RunService = game:GetService("RunService")
local ServerStorage = game:GetService("ServerStorage")

function enemy.LerpTo(model, target)
	local alpha = 0
	local speed = model:FindFirstChildOfClass("Humanoid").WalkSpeed 
	local distance = (model.PrimaryPart.Position - target.Position).Magnitude
	local relativeSpeed = distance / speed
	local startCFrame = model.PrimaryPart.CFrame
	local loop = nil
	local reachedTarget = Instance.new("BindableEvent")
	loop = RunService.Heartbeat:Connect(function(delta)
		local goalCFrame = startCFrame:Lerp(target.CFrame, alpha)
		model:PivotTo(goalCFrame)
		alpha += delta / relativeSpeed
		if alpha >= 1 then
			loop:Disconnect()
			reachedTarget:Fire()
		end
		
	end)
	reachedTarget.Event:Wait()
end

function enemy.Navigate(model)
	enemy.LerpTo(model,waypoints.Start)
	for i=1, #waypoints:GetChildren()-2 do
		enemy.LerpTo(model, waypoints[i])
		print("Loop",i)
	end
	enemy.LerpTo(model,waypoints.End)
	model:Destroy()
	print("destroyed unit")
end

function enemy.Spawn(name, amount)
	local enemyExists = ServerStorage.Enemies:FindFirstChild(name)
	if enemyExists then
		for i=1, amount do
			task.wait(0.5)
			local newEnemy = enemyExists:Clone()
			newEnemy:PivotTo(waypoints.Start.CFrame)
			newEnemy.Parent = workspace.Hostiles
			for i, object in ipairs(newEnemy:GetDescendants()) do
				if object:IsA("BasePart") then
					object.CollisionGroup = "Enemy"
				end
			end
			coroutine.wrap(enemy.Navigate)(newEnemy)
		end
	else
		warn("No enemy found")
	end
end
return enemy

Above is the code used for the units.
When they dissapear they don’t dissapear because of the destroy call.

Did you create the game recently? I noticed StreamingEnabled starts on by default now.