anchor.diff:  
     HttpClientConnection open(
         String method, String host, int port, String path) {
  -    return _open(method, host, port, path);
  +    // TODO(sgjesse): The path set here can contain both query and
  +    // fragment. They should be cracked and set correctly.
  +    return _open(method, new Uri.fromComponents(
  +        scheme: "http", domain: host, port: port, path: path));
     }
   
     HttpClientConnection _open(String method,
  -                             String host,
  -                             int port,
  -                             String path,
  +                             Uri uri,
                                [_HttpClientConnection connection]) {
       if (_shutdown) throw new HttpException("HttpClient shutdown");
  -    if (method == null || host == null || port == null || path == null) {
  +    if (method == null || uri.domain.isEmpty() == null) {
         throw new ArgumentError(null);
       }
  -    return _prepareHttpClientConnection(host, port, method, path, connection);
  +    return _prepareHttpClientConnection(method, uri, connection);
     }
   
     HttpClientConnection openUrl(String method, Uri url) {
  
positive.code:     if (url.userInfo != "") {
        throw new HttpException("Unsupported user info ${url.userInfo}");
      }
      int port = url.port == 0 ? HttpClient.DEFAULT_HTTP_PORT : url.port;
      String path;
      if (url.query != "") {
        if (url.fragment != "") {
          path = "${url.path}?${url.query}#${url.fragment}";
        } else {
          path = "${url.path}?${url.query}";
        }
      } else {
        path = url.path;
      }
      return _open(method, url.domain, port, path, connection);
    }
  
    HttpClientConnection get(String host, int port, String path) {
      return _open("GET", host, port, path);
    }
  
    HttpClientConnection getUrl(Uri url) => _openUrl("GET", url);
  
    HttpClientConnection post(String host, int port, String path) {
      return _open("POST", host, port, path);
    }
  
    HttpClientConnection postUrl(Uri url) => _openUrl("POST", url);
  
negative.code:   }
  
    HttpClientConnection _prepareHttpClientConnection(
      String method,
      Uri url,
      [_HttpClientConnection connection]) {
  
      String host = url.domain;
      int port = url.port == 0 ? HttpClient.DEFAULT_HTTP_PORT : url.port;
  
      void _connectionOpened(_SocketConnection socketConn,
                             _HttpClientConnection connection) {
        connection._connectionEstablished(socketConn);
        String path;
        if (url.query != "") {
          if (url.fragment != "") {
            path = "${url.path}?${url.query}#${url.fragment}";
          } else {
            path = "${url.path}?${url.query}";
          }
        } else {
          path = url.path;
        }
        HttpClientRequest request = connection.open(method, path);
        request.headers.host = host;
        request.headers.port = port;
  