Every Key in Self Identified as Nil

I’ve set up a projectile module and every function works fine except except for the :Finish() function. I’ve printed out every value and it identifies all of them as nil.

Projectile.new()

local self = setmetatable({}, Projectile)
self.ProjectilePart = projectilePart
self.ProjectileMover = projectileMover
self.ProjectileFinished = projectileDone

game:GetService('ReplicatedStorage').Projectile:FireAllClients(projectilePart, Projectile.Player, tick())

projectileDone.Changed:Connect(function(finalVal)
	if finalVal == true then
		FinishedFunction()
	end
end)
		
delay(Lifetime, function()
	Projectile:Finish()
	Projectile:Destroy()
end)

Projectile:Finish()

self.ProjectileFinished.Value = true

The projectile ignores its lifetime

Output

image

The issue may be that the calls in this block…

delay(Lifetime, function()
	Projectile:Finish()
	Projectile:Destroy()
end)

…are being called on the class-definition table and not on the self table that has been created with the class-definition metatable.