anchor.diff:    * TODO: refactor into proxy module
     */
   IsolateSink spawnRemote(String lib){
  -  var buffer = new List();
  -  var bufferstream = new Stream.fromIterable(buffer).map(encode);
  +
  +  // by subscribing to the stream, and pausing it, data written to the 
  +  // sink before the socket is connected is buffered, 
  +  // Hack, because we dont have a socket object until the connect()
  +  // future completes. we use a null socket, in the stream listener, 
  +  // which is assigned to a concrete socket when the connection is 
  +  // established. This is possible because the stream is paused.
     var box = new MessageBox();
     Socket socket = null;
     var untilSignal = new Completer();
  
positive.code: 
    Socket.connect('127.0.0.1',12345)
      .then((s){
          socket = s;
          untilSignal.complete();
      });
  
negative.code: import 'dart:io';
  import 'dart:async';
  import 'dart:isolate';
  import 'dart:json' as json;
  
  
  /**
    * encode string with header
    * format: "inputstring" -> "11,inputstring"
    */
  String encode(var input){
    var js = json.stringify(input);
    return "${js.length},$js";
  }
  
  /**
    * split string to a list of strings, according to string headers
    */
  List decode(String input){
    // match group 1 is string length, match group 2 is the rest of the string
    var regex = new RegExp(r'^([0-9]+),(.*)',multiLine:true);
    var output = new List();
    while (regex.hasMatch(input)) {
      var match = regex.firstMatch(input);
  