current commit
260823.3 · dgram: don't swallow bind errors when callback is provided
'use strict';
const common = require('../common');
const assert = require('node:assert');
const dgram = require('node:dgram');

// Ensure that bind errors (e.g. EADDRINUSE) are not silently swallowed
// when socket.bind() is called with a callback but without a user
// 'error' handler.

const socket1 = dgram.createSocket('udp4');

socket1.bind(0, common.mustCall(() => {
  const { port } = socket1.address();
  const socket2 = dgram.createSocket('udp4');

  process.on('uncaughtException', common.mustCall((err) => {
    assert.strictEqual(err.code, 'EADDRINUSE');
    socket1.close();
    socket2.close();
  }));

  socket2.bind({ port }, common.mustNotCall());
}));