anchor.diff:    }
     bool _send(String id, Completer<Map<String, List<Message>>> responder) {
       if (!_messages.containsKey(id)) {
  -      if (!responder.isCompleted) {
  -        responder.complete(null);
  -      }
  +      responder.complete(null);
         return true;
       }
       final topics = _messages[id];
       if (topics.isEmpty) {
  -      if (!responder.isCompleted) {
  -        responder.complete(null);
  -      }
  +      responder.complete(null);
         return true;
       }
       final result = <String, List<Message>>{};
  -    var count = 0;
       for (final topic in topics.entries) {
         final name = topic.key;
         final messages = topic.value;
         if (messages == null || messages.isNotEmpty) {
  -        ++count;
           result[name] = messages;
           if (messages == null) {
             topics.remove(name);
  
positive.code:   }
  
    void _response(String id) {
      if (_responders.containsKey(id)) {
        final responder = _responders[id];
        if (_send(id, responder)) {
          _responders.remove(id);
        }
      }
    }
  
    bool _offline(Map<String, List<Message>> topics, String id, String topic,
        ServiceContext context) {
      if (topics.containsKey(topic)) {
        final messages = topics.remove(topic);
        if (onUnsubscribe != null) {
          onUnsubscribe(id, topic, messages, context);
        }
  
negative.code:         }
        }
      }
      if (result.isEmpty) return false;
      responder.complete(result);
      _doHeartbeat(id);
      return true;
    }
  
    void _doHeartbeat(String id) {
      if (heartbeat <= Duration.zero) return;
      var timer = Completer<bool>();
      if (_timers.containsKey(id) && !_timers[id].isCompleted) {
        _timers[id].complete(false);
      }
      _timers[id] = timer;
      var heartbeatTimer = Timer(heartbeat, () {
        if (!timer.isCompleted) {
          timer.complete(true);
        }
      });
      timer.future.then((value) {
        heartbeatTimer.cancel();
        if (value && _messages.containsKey(id)) {
          final topics = _messages[id];
          for (final topic in topics.keys) {
            _offline(topics, id, topic, service.createContext());
          }
        }
      });
    }
  
    String _getId(ServiceContext context) {
  