|  | 
| 1 | 1 | 'use strict'; | 
| 2 |  | -require('../common'); | 
|  | 2 | +const common = require('../common'); | 
| 3 | 3 | const assert = require('assert'); | 
| 4 |  | - | 
| 5 |  | -var exceptions = 0; | 
| 6 |  | -var timer1 = 0; | 
| 7 |  | -var timer2 = 0; | 
|  | 4 | +const errorMsg = 'BAM!'; | 
| 8 | 5 | 
 | 
| 9 | 6 | // the first timer throws... | 
| 10 |  | -console.error('set first timer'); | 
| 11 |  | -setTimeout(function() { | 
| 12 |  | -  console.error('first timer'); | 
| 13 |  | -  timer1++; | 
| 14 |  | -  throw new Error('BAM!'); | 
| 15 |  | -}, 100); | 
|  | 7 | +setTimeout(common.mustCall(function() { | 
|  | 8 | +  throw new Error(errorMsg); | 
|  | 9 | +}), 100); | 
| 16 | 10 | 
 | 
| 17 | 11 | // ...but the second one should still run | 
| 18 |  | -console.error('set second timer'); | 
| 19 |  | -setTimeout(function() { | 
| 20 |  | -  console.error('second timer'); | 
| 21 |  | -  assert.equal(timer1, 1); | 
| 22 |  | -  timer2++; | 
| 23 |  | -}, 100); | 
|  | 12 | +setTimeout(common.mustCall(function() {}), 100); | 
| 24 | 13 | 
 | 
| 25 | 14 | function uncaughtException(err) { | 
| 26 |  | -  console.error('uncaught handler'); | 
| 27 |  | -  assert.equal(err.message, 'BAM!'); | 
| 28 |  | -  exceptions++; | 
|  | 15 | +  assert.strictEqual(err.message, errorMsg); | 
| 29 | 16 | } | 
| 30 |  | -process.on('uncaughtException', uncaughtException); | 
| 31 | 17 | 
 | 
| 32 |  | -var exited = false; | 
|  | 18 | +process.on('uncaughtException', common.mustCall(uncaughtException)); | 
|  | 19 | + | 
| 33 | 20 | process.on('exit', function() { | 
| 34 |  | -  assert(!exited); | 
| 35 |  | -  exited = true; | 
| 36 | 21 |   process.removeListener('uncaughtException', uncaughtException); | 
| 37 |  | -  assert.equal(exceptions, 1); | 
| 38 |  | -  assert.equal(timer1, 1); | 
| 39 |  | -  assert.equal(timer2, 1); | 
| 40 | 22 | }); | 
0 commit comments