anchor.diff:      _version = change["version"];
     }
   
  -  void close() {
  -    _timer.cancel();
  -  }
  -
     Stream onClose() {
   
     }
  
positive.code:     });
    }
  
    Future _requestInitialData() {
      return _connection.sendRequest(() => new ClientRequest("sync", {
        "action" : "get_data",
        "collection" : collectionName
      })).then((response) {
        _handleResponse(response);
        print("Got initial data, synced to version ${_version}");
        return _version;
      });
    }
  
    void _setupDiffPolling() {
      _timer = new Timer.periodic(new Duration(seconds: 2), (_) {
        _connection.sendRequest(() => new ClientRequest("sync", {
          "action" : "get_diff",
          "collection" : collectionName,
          "version" : _version
        })).then((response) {
          _handleResponse(response);
        });
      });
    }
  
    void _handleResponse(Map response) {
  
negative.code:   Map args = {};
    num _version = -1;
    String _author;
    bool _stopped = true;
  
    Subscription(this.collectionName, this._connection, this._author,
        this._idGenerator, [this.args]) {
      collection = new DataCollection();
      _setupListeners();
      startGettingData();
    }
  
    void _setupListeners() {
  