123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // 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);
|