docs: function isResponseStatusOkay(response) {
    /*jshint validthis:true */
    var operation = this;
  
    var statusCode = response.statusCode;
  
    var errMsg = null;
  
    var statusCodeValidator = operation.statusCodeValidator;
    if (typeof statusCodeValidator === 'function') {
      errMsg = statusCodeValidator.call(operation, statusCode);
    } else {
      var validStatusCodes = operation.validStatusCodes;
      if (Array.isArray(validStatusCodes)) {
        var isError = true;
        for (var i=0; i < validStatusCodes.length; i++) {
          if (validStatusCodes[i] === statusCode) {
            isError = false;
            break;
          }
        }
        if (isError) {
          errMsg = 'response with invalid '+statusCode+' status';
        }
      } else if (statusCode >= 300) {
        errMsg = 'cannot process response with '+statusCode+' status';
      }
    }
  
    if (errMsg != null) {
      var clientError = operation.makeError(errMsg);
      clientError.statusCode = statusCode;
      if (statusCode >= 400) {
        response.pipe(concatStream(
            {encoding: 'string'},
            function errorBodyDispatcher(body) {
              if (body.length > 0) {
                var bodyMsg = (typeof body === 'string' || body instanceof String) ? body : body.toString();
                var contentType = response.headers['content-type'];
                clientError.body =
                  ((typeof contentType === 'string' || contentType instanceof String) &&
                      contentType.match(/^application\/json(;.*)?$/)) ?
                  mlutil.parseJSON(bodyMsg) : bodyMsg;
              }
              operation.errorListener(clientError);
            }));
      } else {
        operation.errorListener(clientError);
      }
  
      return false;
    }
  
    operation.startedResponse = true;
    return true;
  }