anchor.diff:    }
   }
   
  -http_base.Response emptyResponse(int status,
  -                                 http_base.Headers headers,
  -                                 String body) {
  +http_base.Response stringResponse(int status,
  +                                  http_base.Headers headers,
  +                                  String body) {
     if (headers == null) {
       headers = new HeadersImpl({});
     }
     return new ResponseImpl(status, headers, byteStream(body));
  +}
  +
  +http_base.Response binaryResponse(int status,
  +                                 http_base.Headers headers,
  +                                 List<int> bytes) {
  +  if (headers == null) {
  +    headers = new HeadersImpl({});
  +  }
  +  return new ResponseImpl(status, headers, new Stream.fromIterable([bytes]));
   }
   
   Stream<List<int>> byteStream(String s) {
  
positive.code:           throw new common_external.ApiRequestError(
                "No or invalid 'content-length' header in media response.");
          }
          return new common_external.Media(
              response.read(), contentLength, contentType: contentType);
        }
  
negative.code:       }
        bodyController.close();
  
        var headers;
        if (downloadRange != null) {
          headers = new HeadersImpl({
            'content-type' : [CONTENT_TYPE_UTF8],
            'content-length' : ['$length'],
            'range' : [
                'bytes=${downloadRange.start}-${downloadRange.end}',
            ],
          });
        } else {
          headers = new HeadersImpl({
            'content-type' : [CONTENT_TYPE_UTF8],
            'content-length' : ['$length'],
          });
        }
  
        return _httpClient(
            new RequestImpl(method, uri, headers, bodyController.stream));
      }
  