public Task Subscribe(Subscriber subscriber, MessageType messageType, ContextBag context)
        {
            var dict = storage.GetOrAdd(messageType, type => new ConcurrentDictionary<string, Subscriber>(StringComparer.OrdinalIgnoreCase));

            dict.AddOrUpdate(subscriber.TransportAddress, _ => subscriber, (_, __) => subscriber);
            return TaskEx.CompletedTask;
        }
 public Task Unsubscribe(Subscriber subscriber, MessageType messageType, ContextBag context)
 {
     ConcurrentDictionary<string, Subscriber> dict;
     if (storage.TryGetValue(messageType, out dict))
     {
         Subscriber _;
         dict.TryRemove(subscriber.TransportAddress, out _);
     }
     return TaskEx.CompletedTask;
 }