function Signal.Once(o,U)local N local q=false N=o:Connect(function(...)if q then return end q=true N:Disconnect()U(...)end)return N end function Signal.GetConnections(U)local o={}local N=U._handlerListHead while N do table.insert(o,N)N=N._next end return o end

function Signal:Once(fn)
	local connection
	local done = false
	connection = self:Connect(function(...)
		if done then
			return
		end
		done = true
		connection:Disconnect()
		fn(...)
	end)
	return connection
end

function Signal:GetConnections()
	local items = {}
	local item = self._handlerListHead
	while item do
		table.insert(items, item)
		item = item._next
	end
	return items
end
