| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | // This file should be ES5 compatible/* eslint prefer-spread:0, no-var:0, prefer-reflect:0, no-magic-numbers:0 */'use strict'module.exports = (function () {	// Import Events	var events = require('events')	// Export Domain	var domain = {}	domain.createDomain = domain.create = function () {		var d = new events.EventEmitter()		function emitError (e) {			d.emit('error', e)		}		d.add = function (emitter) {			emitter.on('error', emitError)		}		d.remove = function (emitter) {			emitter.removeListener('error', emitError)		}		d.bind = function (fn) {			return function () {				var args = Array.prototype.slice.call(arguments)				try {					fn.apply(null, args)				}				catch (err) {					emitError(err)				}			}		}		d.intercept = function (fn) {			return function (err) {				if ( err ) {					emitError(err)				}				else {					var args = Array.prototype.slice.call(arguments, 1)					try {						fn.apply(null, args)					}					catch (err) {						emitError(err)					}				}			}		}		d.run = function (fn) {			try {				fn()			}			catch (err) {				emitError(err)			}			return this		}		d.dispose = function () {			this.removeAllListeners()			return this		}		d.enter = d.exit = function () {			return this		}		return d	}	return domain}).call(this)
 |