anchor.diff:          _connections.forEach((k, c) => c.addStream(s));
         });
   
  +      _connections.forEach((s, c) => _createDataChannel(s, c));
  +
         _connections.forEach((s, c) => _createOffer(s, c));
   
         completer.complete(stream);
  
positive.code:     return completer.future;
    }
  
    _createPeerConnection(id) {
      var pc = new RtcPeerConnection(_iceServers);
  
      pc.onIceCandidate.listen((e){
        if (e.candidate != null) {
  
negative.code:       });
      });
  
      pc.onDataChannel.listen((e) {
        _addDataChannel(id, e.channel);
      });
  
      return pc;
    }
  
    _addDataChannel(id, RtcDataChannel channel) {
      channel.onOpen.listen((e){});
  
      channel.onMessage.listen((e){
        _messageController.add({
          'type': 'data',
          'id': id,
          'data': e.data
        });
      });
  
      channel.onClose.listen((e){});
  
      _data[id] = channel;
    }
  
    _createDataChannel(id, RtcPeerConnection pc, { label: 'fileTransfer' }) {
      var channel = pc.createDataChannel(label, { 'reliable': false });
      _addDataChannel(id, channel);
    }
  
    _createOffer(int socket, RtcPeerConnection pc) {
  