Code that can be used instead to achieve this:
local RbxUtility = LoadLibrary("RbxUtility")
local function waitUntilTimeout(event, timeout)
local signal = RbxUtility.CreateSignal()
local conn = nil
conn = event:Connect(function(...)
conn:Disconnect()
signal:fire(...)
end)
delay(timeout, function()
if (conn ~= nil) then
conn:Disconnect()
conn = nil
signal:fire(nil)
end
end)
return signal:wait()
end
-- Example usage
local child = waitUntilTimeout(game.Workspace.ChildAdded, 5)
if (child == nil) then
print("ChildAdded did not fire before timeout")
else
print("New child " .. tostring(child) .. " added")
end
Credit to @Merely for writing this code: Timeout argument for Event:Wait() - #4 by Merely