anchor.diff:          .then((host) {
             if (host is _InternetAddress) return [host];
             return lookup(host)
  -              .then((list) {
  -                if (list.length == 0) {
  +              .then((addresses) {
  +                if (addresses.isEmpty) {
                     throw createError(response, "Failed host lookup: '$host'");
                   }
  -                return list;
  +                return addresses;
                 });
           })
           .then((addresses) {
             assert(addresses is List);
             var completer = new Completer();
             var it = addresses.iterator;
  -          void run(error) {
  +          var error = null;
  +          var connecting = new HashMap();
  +          void connectNext() {
               if (!it.moveNext()) {
  -              assert(error != null);
  -              completer.completeError(error);
  +              if (connecting.isEmpty) {
  +                assert(error != null);
  +                completer.completeError(error);
  +              }
                 return;
               }
               var address = it.current;
  
positive.code:             var result = socket.nativeCreateConnect(address._in_addr, port);
              if (result is OSError) {
                // Keep first error, if present.
                run(error != null ? error :
                    createError(result, "Connection failed", address, port));
              } else {
                socket.port;  // Query the local port, for error messages.
                // Setup handlers for receiving the first write event which
                // indicate that the socket is fully connected.
                socket.setHandlers(
                    write: () {
                      socket.setListening(read: false, write: false);
                      completer.complete(socket);
                    },
                    error: (e) {
                      socket.close();
                      // Keep first error, if present.
                      run(error != null ? error : e);
                    }
                );
                socket.setListening(read: false, write: true);
              }
            }
            run(null);
            return completer.future;
          });
    }
  
negative.code: 
    static const int NORMAL_TOKEN_BATCH_SIZE = 8;
    static const int LISTENING_TOKEN_BATCH_SIZE = 2;
  
    static const Duration _RETRY_DURATION = const Duration(milliseconds: 250);
    static const Duration _RETRY_DURATION_LOOPBACK =
        const Duration(milliseconds: 25);
  
    // Use default Map so we keep order.
    static Map<int, _NativeSocket> _sockets = new Map<int, _NativeSocket>();
  