unsubscribe method
Removes subscriber from this node's listener set.
Also prunes any dead weak references encountered during removal. Safe to call on a disposed node (no-op).
Implementation
void unsubscribe(ZenithSubscriber subscriber) {
if (_isDisposed) return;
var current = _head;
while (current != null) {
final next = current.next;
if (identical(current.subscriber.target, subscriber) ||
current.subscriber.target == null) {
if (current.prev != null) {
current.prev!.next = current.next;
} else {
_head = current.next;
}
if (current.next != null) {
current.next!.prev = current.prev;
} else {
_tail = current.prev;
}
current.linked = false;
_subscriberCount--;
}
current = next;
}
}