/// <summary>
        /// Create an instance of this class and subscribes to messages that are broadcasted to the "all" stream for the hub
        /// </summary>
        /// <param name="groupActorProvider"></param>
        /// <param name="userActorProvider"></param>
        /// <param name="messageObservable"></param>
        /// <param name="messageObserver"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>A new instance of <see cref="OrgnalRHubLifetimeManager<THub>" /> that is subscribed to the anonymous message broadcasts</returns>
        public static async Task <OrgnalRHubLifetimeManager <THub> > CreateAsync(
            IGroupActorProvider groupActorProvider,
            IUserActorProvider userActorProvider,
            IMessageObservable messageObservable,
            IMessageObserver messageObserver,
            ILogger <OrgnalRHubLifetimeManager <THub> > logger,
            CancellationToken cancellationToken = default
            )
        {
            var manager = new OrgnalRHubLifetimeManager <THub>(groupActorProvider, userActorProvider, messageObservable, messageObserver, logger);

            manager.allSubscriptionHandle = await messageObservable.SubscribeToAllAsync(manager.OnAnonymousMessageReceived, manager.OnAnonymousSubscriptionEnd, default, cancellationToken).ConfigureAwait(false);
 private OrgnalRHubLifetimeManager(
     IGroupActorProvider groupActorProvider,
     IUserActorProvider userActorProvider,
     IMessageObservable messageObservable,
     IMessageObserver messageObserver,
     ILogger <OrgnalRHubLifetimeManager <THub> > logger
     )
 {
     this.groupActorProvider = groupActorProvider ?? throw new ArgumentNullException(nameof(groupActorProvider));
     this.userActorProvider  = userActorProvider ?? throw new ArgumentNullException(nameof(userActorProvider));
     this.messageObservable  = messageObservable ?? throw new ArgumentNullException(nameof(messageObservable));
     this.messageObserver    = messageObserver ?? throw new ArgumentNullException(nameof(messageObserver));
     this.logger             = logger ?? throw new ArgumentNullException(nameof(logger));
 }