anchor.diff:  import 'package:async/async.dart';
   
   import 'base_client.dart';
  -import 'base_request.dart';
   import 'exception.dart';
  -import 'streamed_response.dart';
  +import 'request.dart';
  +import 'response.dart';
   
   /// A `dart:io`-based HTTP client.
   ///
  
positive.code:   IOClient([HttpClient inner]) : _inner = inner ?? new HttpClient();
  
    /// Sends an HTTP request and asynchronously returns the response.
    Future<StreamedResponse> send(BaseRequest request) async {
      var stream = request.finalize();
  
      try {
        var ioRequest = await _inner.openUrl(request.method, request.url);
  
        ioRequest
            ..followRedirects = request.followRedirects
            ..maxRedirects = request.maxRedirects
            ..contentLength = request.contentLength == null
                ? -1
                : request.contentLength
            ..persistentConnection = request.persistentConnection;
        request.headers.forEach((name, value) {
          ioRequest.headers.set(name, value);
        });
  
        var response = await stream.pipe(
            DelegatingStreamConsumer.typed(ioRequest));
        var headers = <String, String>{};
        response.headers.forEach((key, values) {
          headers[key] = values.join(',');
        });
  
        return new StreamedResponse(
            DelegatingStream.typed/*<List<int>>*/(response).handleError((error) =>
                throw new ClientException(error.message, error.uri),
                test: (error) => error is HttpException),
            response.statusCode,
            contentLength: response.contentLength == -1
                ? null
                : response.contentLength,
            request: request,
            headers: headers,
            isRedirect: response.isRedirect,
            persistentConnection: response.persistentConnection,
            reasonPhrase: response.reasonPhrase);
      } on HttpException catch (error) {
        throw new ClientException(error.message, error.uri);
      }
    }
  
  
negative.code:     if (_inner != null) _inner.close(force: true);
      _inner = null;
    }
  
    /// Determines the finalUrl retrieved by evaluating any redirects received in
    /// the [response] based on the initial [request].
    Uri _responseUrl(Request request, HttpClientResponse response) {
      var finalUrl = request.url;
  
      for (var redirect in response.redirects) {
        var location = redirect.location;
  
        // Redirects can either be absolute or relative
        finalUrl = location.isAbsolute ? location : finalUrl.resolveUri(location);
      }
  
      return finalUrl;
    }
  }
  