
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)`.