Possible issue storing RBXScriptSignal into table index

  1. What do you want to achieve?
    Trying to see if this issue is intended behavior or not and if other people have the same problem.

  2. What is the issue?
    When you try to store an object of the class RBXScriptSignal it seems to be referenced/serialized incorrectly where you can no longer access that index with the same object, as if everytime you indexed the signal (“game.Changed”) you got a seperate instance everytime. Below is an example of what I mean by this.

local signal = game.Changed --Script Signal
local a = {} --table

a[signal] = true
print(a[game.Changed]) --NIL
print(a[signal]) --true

print(signal == game.Changed) --yet this is true, meaning they should be the same

This doesnt really make sense to me as they should be the same signal.
Another thing I found was that the connect function under script signals are constantly changing, unlike other instance methods, which leads me to believe that the signal is changing everytime it is indexed(?):

while wait() do
	print(tostring(game.GetChildren)) --same output everytime, function not changing
    print(tostring(game.Changed.Connect)) --changes output everytime, function is changing
end
  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    While a workaround is possible through your own serialization and such, this is tedious and I believe it shouldn’t be an issue altogether. I would’ve posted this in bugs had I had the required roles.

Im really just asking if this is desired behavior or a bug because I’m trying to develop a system that allows me to create one connection for each signal I use and I have to store these signals as indexes in a table to keep track of functions connected to them, and this problem has caused me to have to make my own way to “serialize” the signals to avoid this.