anchor.diff:      final payload = new RequestPayload.fromBytes(bytes, contentType);
       final uri = this._getUri(path: objectKey);
       this._awsClient.put(uri, payload).then((HttpClientResponse resp) {
  -      if (resp.reasonPhrase.toUpperCase() != 'OK') {
  -        completer.completeError(resp);
  -        //TODO: deserialize error into model some model
  -      } else {
  -        completer.complete();
  -      }
  +      _readResponseAsString(resp).then((responseText) {
  +        if (resp.reasonPhrase.toUpperCase() != 'OK') {
  +          _handleError(responseText, completer);
  +        } else {
  +          completer.complete();
  +        }
  +      });
       });
       return completer.future;
     }
  
positive.code:     this._awsClient.post(uri, payload).then((HttpClientResponse resp) {
        _readResponseAsString(resp).then((responseText) {
          if (resp.reasonPhrase.toUpperCase() != 'OK') {
            final err = new ErrorResponse.fromXml(responseText);
            _logger.warning(err.message);
            completer.completeError(err);
          } else {
            _logger.fine(responseText);
            final results = new DeleteResults.fromXml(responseText);
  
negative.code:     this._awsClient.get(uri).then((HttpClientResponse resp) {
        _readResponseAsString(resp).then((String responseText) {
          if (resp.reasonPhrase.toUpperCase() != 'OK') {
            _handleError(responseText, completer);
          } else {
            final results = new ListBucketResult.fromXml(responseText);
            completer.complete(results);
  