code: function willComputeChecksums(req) {
      if (this.computableChecksumOperations[req.operation]) return true;
      if (!this.config.computeChecksums) return false;
  
      // TODO: compute checksums for Stream objects
      if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) &&
          typeof req.httpRequest.body !== 'string') {
        return false;
      }
  
      var rules = req.service.api.operations[req.operation].input.members;
  
      // Sha256 signing disabled, and not a presigned url
      if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) {
        if (rules.ContentMD5 && !req.params.ContentMD5) {
          return true;
        }
      }
  
      // V4 signer uses SHA256 signatures so only compute MD5 if it is required
      if (req.service.getSignerClass(req) === AWS.Signers.V4) {
        if (rules.ContentMD5 && !rules.ContentMD5.required) return false;
      }
  
      if (rules.ContentMD5 && !req.params.ContentMD5) return true;
    }
docs: Checks whether checksums should be computed for the request.
  If the request requires checksums to be computed, this will always
  return true, otherwise it depends on whether {AWS.Config.computeChecksums}
  is set.
  
  @param req [AWS.Request] the request to check against
  @return [Boolean] whether to compute checksums for a request.
  @api private