--[=[
	Fires a ScriptSignal object with the arguments passed.

	```lua
	ScriptSignal:Connect(function(text)
		print(text)
	end)

	ScriptSignal:Fire("Some Text...")

	-- "Some Text..." is printed twice
	```

	@param ... any
	@ignore
]=]

function ScriptSignal:Fire(...: any)
    local node: ScriptConnectionNode? = self._head
    while node ~= nil do
        if node._connection ~= nil then
            if FreeThread == nil then
                task.spawn(CreateFreeThread)
            end

            task.spawn(FreeThread :: thread, node._handler, ...)
        end

        node = node._next
    end
end
