UNPKG

1.35 kBJavaScriptView Raw
1var domain = require("domain");
2var atry = module.exports = function(toRun) {
3
4 var dom = domain.create();
5 var argsWithoutFirst = Array.prototype.slice.call(arguments, 1);
6 return {
7 run: function(errHandle) {
8 dom.run(function() {
9 try {
10 toRun.apply(null, argsWithoutFirst);
11 } catch (err) {
12 dom.exit();
13 errHandle(err);
14 }
15 });
16 },
17 catch: function(errHandle) {
18 dom.on("error", function(err) {
19 dom.exit();
20 return errHandle(err);
21 })
22 this.run(errHandle);
23 return this;
24 },
25 ignoreCatch: function() {
26 dom.on("error", function() {});
27 this.run(function() {});
28 }
29 };
30};
31
32module.exports.bind = function(bindFunction) {
33 return {
34 catch: function(catchFunction) {
35
36 return function() {
37 var args = Array.prototype.slice.call(arguments, 0);
38 args.unshift(bindFunction);
39 atry.apply(atry, args).catch (catchFunction);
40 }
41 }
42 };
43}
44
45module.exports.intercept = function(bindFunction) {
46 return {
47 catch: function(catchFunction) {
48 return function(err) {
49 if(err)
50 return catchFunction(err);
51
52 var args = Array.prototype.slice.call(arguments, 1);
53
54 args.unshift(bindFunction);
55 atry.apply(atry, args).catch (catchFunction);
56 };
57 }
58 };
59}
\No newline at end of file