This bindable event won't fire, why?

So I’m working on a TweenService module, but the bindable event won’t fire at all. There are no errors, and I’ve set the parent to workspace to make sure it’s a bindable event.

local ReplicatedTweening = {}

local RunService = game:GetService("RunService")

function ReplicatedTweening:Create()
	local replicatedTween = {}
	local events = {
		Completed = Instance.new("BindableEvent")
	}
	
	for event, info in pairs(events) do
		replicatedTween[event] = info.Event -- to reference in other scripts
	end
	
	function replicatedTween:Play() -- this function runs
		events.Completed:Fire()
		print("Fired event!")
		events.Completed.Event:Connect(function() -- I did this to see if this would even fire, it won't.
			print("Completed event was fired.")
		end)
	end
	
	return replicatedTween
end

return ReplicatedTweening

try doing

events.Completed.Event:Connect(function() 
	print("Completed event was fired.")
end)

before

events.Completed:Fire()

It works, but the way I have to handle it looks like this.


I want to be able to call the event after playing a tween like this.

tween:Play()
tween.Completed:Connect(funtion() end) -- set up event, AFTER.

EDIT: Calling a new thread works as intended, I’ll have to keep developing this module to see if this becomes a problem.

Define the listener when the bindable event is created. Otherwise a new listener would be created every time the ‘Play’ function is run.