function _wrapExecutorContext(shim, args) {
  const context = {
    executor: args[0],
    promise: null,
    self: null,
    args: null
  }
  contextExporter[symbols.executorContext] = context
  args[0] = contextExporter

  /**
   *
   * @param {Function} resolve function of promise
   * @param {Function} reject function of promise
   * @param {...any} args
   */
  function contextExporter(...args) {
    const [resolve, reject] = args
    context.self = this
    context.args = args
    context.args[0] = _wrapResolver(context, resolve)
    context.args[1] = _wrapResolver(context, reject)
  }
}
@param {object} shim instance of shim
@param {Array} args arguments passed to executor function
@private