anchor.diff:      clients.add(c);
   
       conn.onClosed = (int status, String reason) {
  +      c.topics.forEach((t) => _unsubscribe(c, t));
         clients.remove(c);
       };
   
  
positive.code:   }
  
    void onUnsubscribe(Client c, String topicUri) {
      var uri = curie.decode(topicUri);
  
      c.topics.remove(uri);
  
      if (topicMap.containsKey(uri)) {
        topicMap[uri].remove(c);
  
negative.code:     }
    }
  
    /**
     * Publish an event to all the subscribed clients.
     */
    void publish(String topicUri, event) {
      final uri = curie.decode(topicUri),
            subscribers = topicMap[uri];
  
      subscribers.forEach((client) {
        if (clients.contains(client)) {
          client.event(topicUri, event);
        }
      });
    }
  }