function wrapFunctionFirstNoSegment(original, name) {
  if (typeof original !== 'function') {
    return original
  }

  logger.trace('Wrapping function %s (no segment)', name || original.name || 'anonymous')
  const tracer = this

  return wrappedFunction

  function wrappedFunction() {
    if (!tracer.getTransaction()) {
      return original.apply(this, arguments)
    }
    const context = tracer.getContext()
    const args = tracer.slice(arguments)
    const cb = args[0]
    if (typeof cb === 'function') {
      args[0] = tracer.bindFunction(cb, context)
    }
    return original.apply(this, args)
  }
}
Usefully nerfed version of slice for use in instrumentation. Way faster
than using [].slice.call, and maybe putting it in here (instead of the
same module context where it will be used) will make it faster by
defeating inlining.

  http://jsperf.com/array-slice-call-arguments-2

 for untrustworthy benchmark numbers. Only useful for copying whole
 arrays, and really only meant to be used with the arguments array like.

 Also putting this comment inside the function in an effort to defeat
 inlining.