Deleting character model is delayed

I wrote a script to change the character’s model in game:

local CharacterName = Player:FindFirstChild("CurrentCharacter").Value -- StringValue which stores the character's name

local OldModel = Player.Character
-- Current character's model
local NewModel = game:GetService("ReplicatedFirst"):WaitForChild("Characters"):WaitForChild(CharacterName):Clone()
-- New character's model
local OldCFrame = OldModel:GetPivot()
-- CFrame of the old model
Player.Character = NewModel
-- Sets player's character to the new model
NewModel.Parent = workspace
NewModel:PivotTo(OldCFrame)
-- Moves the new character model to the old character model's cframe

OldModel:Destroy() -- deletes the old character model

However, there is a noticeable delay before the old character is deleted. There’s no errors and I can’t figure out what the issue is


Here is a video of what’s happening in game