/// <summary>
        /// Initializes a new instance of the <see cref="ByteBlasterClient" /> class.
        /// </summary>
        /// <param name="email">The email.</param>
        /// <param name="observer">The observer to subscribe.</param>
        public ByteBlasterClient(string email, IObserver <QuickBlockTransferSegment> observer = null)
        {
            _channelBootstrap = ByteBlasterChannelFactory.CreateBootstrap()
                                .Handler(new ByteBlasterChannelInitializer(email,
                                                                           new ChannelEventHandler <QuickBlockTransferSegment>((ctx, segment) => NotifySubscribers(segment)),
                                                                           new ChannelEventHandler <ByteBlasterServerList>((ctx, serverList) => UpdateServerList(serverList))
                                                                           ));

            if (observer != null)
            {
                Subscribe(observer);
            }
        }
 /// <summary>
 /// Shutdowns the executor threads gracefully.
 /// </summary>
 /// <returns>System.Threading.Tasks.Task.</returns>
 public static Task ShutdownGracefullyAsync() => ByteBlasterChannelFactory.ShutdownGracefullyAsync();