|
85 | 85 | var called2 = 0;
|
86 | 86 | var called3 = 0;
|
87 | 87 | var called4 = 0;
|
| 88 | + var called5 = 0; |
88 | 89 | var callback1 = function() {
|
89 | 90 | called1++;
|
90 | 91 | };
|
|
94 | 95 | };
|
95 | 96 | var callback3 = function() {
|
96 | 97 | called3++;
|
| 98 | + Async.run(callback5); |
97 | 99 | throw new Error('intentional error 2');
|
98 | 100 | };
|
99 | 101 | var callback4 = function() {
|
100 | 102 | called4++;
|
101 | 103 | };
|
| 104 | + var callback5 = function() { |
| 105 | + called5++; |
| 106 | + }; |
102 | 107 | Async.run(callback1);
|
103 | 108 | Async.run(callback2);
|
104 | 109 | Async.run(callback3);
|
|
107 | 112 | assert.throws(function() {
|
108 | 113 | Async._atEndOfMicrotask();
|
109 | 114 | });
|
| 115 | + // Have been called |
110 | 116 | assert.equal(called1, 1);
|
111 | 117 | assert.equal(called2, 1);
|
| 118 | + // Not yet called, due to exception |
| 119 | + assert.equal(called3, 0); |
| 120 | + assert.equal(called4, 0); |
| 121 | + assert.equal(called5, 0); |
| 122 | + // Force next synchronous microtask |
112 | 123 | assert.throws(function() {
|
113 | 124 | Async._atEndOfMicrotask();
|
114 | 125 | });
|
| 126 | + // Have been called |
| 127 | + assert.equal(called1, 1); |
| 128 | + assert.equal(called2, 1); |
115 | 129 | assert.equal(called3, 1);
|
| 130 | + // Not yet called, due to exception |
| 131 | + assert.equal(called4, 0); |
| 132 | + assert.equal(called5, 0); |
| 133 | + // Wait for actual microtask, and verify remaining queue was flushed |
116 | 134 | setTimeout(function() {
|
| 135 | + // Have been called |
| 136 | + assert.equal(called1, 1); |
| 137 | + assert.equal(called2, 1); |
| 138 | + assert.equal(called3, 1); |
117 | 139 | assert.equal(called4, 1);
|
| 140 | + assert.equal(called5, 1); |
118 | 141 | done();
|
119 | 142 | });
|
120 | 143 | });
|
|
0 commit comments