text: 'use strict';
  const common = require('../common');
  
  // Check that cluster works perfectly for both `kill` and `disconnect` cases.
  // Also take into account that the `disconnect` event may be received after the
  // `exit` event.
  // https://github.com/nodejs/node/issues/3238
  
  const assert = require('assert');
  const cluster = require('cluster');
  
  if (cluster.isMaster) {
    function forkWorker(action) {
      const worker = cluster.fork({ action });
      worker.on('disconnect', common.mustCall(() => {
        assert.strictEqual(worker.exitedAfterDisconnect, true);
      }));
  
      worker.on('exit', common.mustCall(() => {
        assert.strictEqual(worker.exitedAfterDisconnect, true);
      }));
    }
  
    forkWorker('disconnect');
    forkWorker('kill');
  } else {
    cluster.worker[process.env.action]();
  }
  