function Signal.Promise(V,o)return Promise.FromEvent(V,o)end function Signal.Destroy(o)o:DisconnectAll()local V=rawget(o,"\095\112\114\111\120\121\072\097\110\100\108\101\114")if V then V:Disconnect()end end
-- Resolve a promise once the signal is fired once
function Signal:Promise(predicate)
	return Promise.FromEvent(self, predicate)
end

function Signal:Destroy()
	self:DisconnectAll()
	local proxyHandler = rawget(self, "_proxyHandler")
	if proxyHandler then
		proxyHandler:Disconnect()
	end
end
