function _bindCallback({ context, callback, binder, shim, fn, args, spec, name }) {
  if (shim.isFunction(callback)) {
    callback.call(context, shim, fn, name, spec.segment, args)
  } else if (shim.isNumber(callback)) {
    shim.logger.trace('Binding callback %d segment: %j', callback, !!spec.segment)
    const cbIdx = normalizeIndex(args.length, callback)
    if (cbIdx !== null) {
      if (spec.shouldCreateSegment) {
        binder.call(shim, args, cbIdx, spec.segment)
      } else {
        args[cbIdx] = shim.bindSegment(args[cbIdx], spec.segment, true)
      }
    }
  }
}
Calls the relevant spec function to properly bind the callback to the active segment.

@private
@param {object} params function params
@param {object} params.context this context for active function
@param {Function | number} params.callback calls relevant function to bind segment or binds segment to apporpriate arg
@param {Function} params.binder function use to bind segment to callback
@param {Shim} params.shim instance of shim
@param {Function} params.fn original function
@param {Array} params.args arguments to original function
@param {object} params.spec spec for given function
@param {string} params.name name of original function