code: function wrap(callback, name) {
    var isLST
      , stack
      , d
      , oldStack
  
    if ('function' !== typeof callback || callback && callback.name === '_trycatchOnError') return callback
  
    isLST = options['long-stack-traces']
    d = process.domain
    if (isLST) {
      oldStack = trycatch.currentStack
      stack = getUpdatedCurrentStack()
    }
  
    // Inherit from callback for when properties are added
    _trycatchNewCallback.__proto__ = callback
    _trycatchNewCallback._trycatchCurrentStack = stack
    return _trycatchNewCallback
  
    function _trycatchNewCallback() {
      // Don't stomp stack in synchronous EventEmitter case
      if (isLST) {
        if (trycatch.currentStack !== oldStack) {
          trycatch.currentStack = stack
        } else if (trycatch.currentStack !== null) {
          trycatch.currentStack = stack
        }
      }
      runInDomain(d, callback, trycatchit, this, arguments)
    }
  }
docs: Generate a new callback Ensure it runs in the same domain