Signal is a list of registered asynchronous callbacks. The signal's life-cycle has two stages: after creation its content could be filled by using standard list operations: sig.append() etc. After you call sig.freeze() the signal is frozen: adding, removing and dropping callbacks is forbidden. The only available operation is calling the previously registered callbacks by using await sig.send(data).