private void UnregisterIfNoMoreSubscribedChannels(IActorRef subscriber)
{
_initiallySubscribedOrUnsubscriber.Match().With<Left<IImmutableSet<IActorRef>>>(v =>
{
if (_initiallySubscribedOrUnsubscriber.CompareAndSet(v,
Either.Left<IImmutableSet<IActorRef>>(v.Value.Remove(subscriber))))
{
UnregisterIfNoMoreSubscribedChannels(subscriber);
}
}).With<Right<IActorRef>>(unsubscriber =>
{
unsubscriber.Value.Tell(new EventStreamUnsubscriber.UnregisterIfNoMoreSubscribedChannels(subscriber));
});
}
}