function instrumentAddCommand({ shim, commandsQueue }) {
  const { agent } = shim
  const clientOpts = shim[redisClientOpts]

  shim.recordOperation(
    commandsQueue,
    'addCommand',
    function wrapAddCommand(_shim, _fn, _fnName, args) {
      const [cmd, key, value] = args[0]
      const parameters = Object.assign({}, clientOpts)
      // If selecting a database, subsequent commands
      // will be using said database, update the clientOpts
      // but not the current parameters(feature parity with v3)
      if (cmd.toLowerCase() === 'select') {
        clientOpts.database_name = key
      }
      if (agent.config.attributes.enabled) {
        if (key) {
          parameters.key = JSON.stringify(key)
        }
        if (value) {
          parameters.value = JSON.stringify(value)
        }
      }

      return new OperationSpec({
        name: (cmd && cmd.toLowerCase()) || 'other',
        parameters,
        promise: true
      })
    }
  )
}
Instruments a given command when added to the command queue by calling `shim.recordOperation`

@param {object} params
@param {Shim} params.shim shim instance
@param {object} params.commandsQueue instance