1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const net = require('net'); 6 7// First test. Check that after error event you can listen right away. 8{ 9 const dummyServer = net.Server(); 10 const server = net.Server(); 11 12 // Run some server in order to simulate EADDRINUSE error. 13 dummyServer.listen(common.mustCall(() => { 14 // Try to listen used port. 15 server.listen(dummyServer.address().port); 16 })); 17 18 server.on('error', common.mustCall((e) => { 19 server.listen(common.mustCall(() => { 20 dummyServer.close(); 21 server.close(); 22 })); 23 })); 24} 25 26// Second test. Check that second listen call throws an error. 27{ 28 const server = net.Server(); 29 30 server.listen(common.mustCall(() => server.close())); 31 32 assert.throws(() => server.listen(), { 33 code: 'ERR_SERVER_ALREADY_LISTEN', 34 name: 'Error' 35 }); 36} 37 38// Third test. 39// Check that after the close call you can run listen method just fine. 40{ 41 const server = net.Server(); 42 43 server.listen(common.mustCall(() => { 44 server.close(); 45 server.listen(common.mustCall(() => server.close())); 46 })); 47} 48