function promiseInitialize(shim, mysql2) {
  shim.setDatastore(shim.MYSQL)
  shim[symbols.wrappedPoolConnection] = false
  shim.wrap(
    mysql2,
    'createConnection',
    function wrapPromiseCreateConnection(shim, createConnection) {
      return async function wrappedPromiseCreateConnection() {
        const promiseConnection = await createConnection.apply(this, arguments)
        wrapCreateConnection(
          shim,
          createConnection,
          'createConnection',
          promiseConnection.connection
        )
        return promiseConnection
      }
    }
  )

  shim.wrap(mysql2, 'createPool', function wrapPromiseCreatePool(shim, createPool) {
    return function wrappedPromiseCreatePool() {
      const promisePool = createPool.apply(this, arguments)
      wrapCreatePool(shim, createPool, 'createPool', promisePool.pool)
      return promisePool
    }
  })

  shim.wrap(
    mysql2,
    'createPoolCluster',
    function wrapPromiseCreatePoolCluster(shim, createPoolCluster) {
      return function wrappedPromiseCreatePoolCluster() {
        const promisePoolCluster = createPoolCluster.apply(this, arguments)
        wrapCreatePoolCluster(
          shim,
          createPoolCluster,
          'createPoolCluster',
          promisePoolCluster.poolCluster
        )
        return promisePoolCluster
      }
    }
  )
}
Used to instrument `mysql2/promise`

@param {Shim} shim instance of shim
@param {object} mysql2 package to instrument