anchor.diff:          }
         });
   
  -      request.listen((data) {
  -        req.add(data);
  -      }).onDone(() {
  -        completer.complete(req.close());
  -      });
  -
  -      return completer.future;
  +      return request.pipe(req);
       }).then((HttpClientResponse res) {
         // Special Handling for WebSockets
         if (res.statusCode == HttpStatus.SWITCHING_PROTOCOLS) {
           return proxyWebSocket(request, res);
         }
  -
  -      var completer = new Completer();
   
         response.statusCode = res.statusCode;
   
  
positive.code:     var client = new HttpClient();
      
      return client.openUrl(request.method, target).then((req) {
        var completer = new Completer();
  
        request.cookies.addAll(req.cookies);
        request.headers.forEach((name, value) {
          for (var v in value) {
  
negative.code: 
        response.cookies.addAll(res.cookies);
  
        return res.pipe(response);
      }).then((_) {
        client.close();
      }).catchError((e, stack) {
  