function createRecorder({ spec, shim, fn, fnName, args }) {
  const msgDesc = updateSpecFromArgs({ shim, fn, fnName, args, spec, ctx: this })
  // Adds details needed by createSegment when used with a spec
  msgDesc.name = _nameMessageSegment(shim, msgDesc, shim._metrics.CONSUME)
  msgDesc.recorder = genericRecorder
  return msgDesc
}
@private
@param {object} params to function
@param {MessageShim} params.shim instance of shim
@param {Function} params.fn function that is being wrapped
@param {string} params.fnName name of function
@param params.args
@param {specs.MessageSpec} params.spec spec for the wrapped consume function
@returns {specs.MessageSpec} updated spec with logic to name segment and apply the genericRecorder