Skip to content



A class for creating API-compatible Roblox Events

This new version originally designed by Anaminus addresses two flaws in previous implementations:

  • Previous versions held a reference to the last set of fired arguments.
  • Arguments would be overridden if the signal was fired by a listener.

Library API

Signal[function Constructor, function Destructor])

Returns a new signal. Receives optional constructor and destructor functions. The constructor is called when the number of listeners/threads becomes greater than 0. The destructor is called when then number of threads/listeners becomes 0. The values returned by the constructor are passed into the destructor.


local Signal = Resources:LoadLibrary("Signal")
local Event =

Signal API


void Signal:Fire(...)

Fire the signal, passing the arguments to each listener and waiting threads. Arguments are always passed by reference.


(...) Signal:Wait()

Block the current thread until the signal is fired. Returns the arguments passed to Fire.


PseudoScriptConnection Signal:Connect(function Function [, any Argument])

Sets a function to be called when the signal is fired. The listener function receives the arguments passed to Fire. Returns a PseudoScriptConnection


void Signal:Destroy()

Disconnects all listeners and becomes unassociated with currently blocked threads. The signal becomes unusable and ready to be garbage collected.


Field Description Type Default value
Event Interface which can only access Connect and Wait PseudoScriptSignal N / A
Bindable Dispatches scheduler-compatible Threads BindableEvent"BindableEvent")
Arguments Holds arguments for pending listener functions and Threads table { }
Connections SignalConnections connected to the signal table { }
Constructor Called when the number of listeners becomes greater than 0 function nil
Destructor Called when then number of listeners becomes 0 function nil

PseudoScriptConnection API

void PseudoScriptConnection:Disconnect()

Disconnects the listener, causing it to no longer be called when the signal is fired.


Field Description Type Default value
Connected Whether the listener is connected bool true