'use strict'; const common = require('../common'); const assert = require('assert'); const fs = require('fs'); const { Server } = require('net'); const { Worker, isMainThread, parentPort } = require('worker_threads'); if (isMainThread) { const w = new Worker(__filename); let fd = null; w.on('message', common.mustCall((fd_) => { assert.strictEqual(typeof fd_, 'number'); fd = fd_; })); w.on('exit', common.mustCall(() => { if (fd === -1) { // This happens when server sockets don’t have file descriptors, // i.e. on Windows. return; } assert.throws(() => fs.fstatSync(fd), { code: 'EBADF' }); })); } else { const server = new Server(); server.listen(0); parentPort.postMessage(server._handle.fd); server.unref(); }