'use strict'; const common = require('../common'); const assert = require('assert'); const dc = require('diagnostics_channel'); const trace = dc.tracingChannel('module.require'); const events = []; let lastEvent; function track(name) { return common.mustCall((event) => { // Verify every event after the first is the same object if (events.length) { assert.strictEqual(event, lastEvent); } lastEvent = event; events.push({ name, ...event }); }); } trace.subscribe({ start: track('start'), end: track('end'), asyncStart: common.mustNotCall('asyncStart'), asyncEnd: common.mustNotCall('asyncEnd'), error: track('error'), }); let error; try { require('does-not-exist'); } catch (err) { error = err; } // Verify order and contents of each event assert.deepStrictEqual(events, [ { name: 'start', parentFilename: module.filename, id: 'does-not-exist', }, { name: 'error', parentFilename: module.filename, id: 'does-not-exist', error, }, { name: 'end', parentFilename: module.filename, id: 'does-not-exist', error, }, ]);