'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const tls = require('tls'); const net = require('net'); const assert = require('assert'); const bonkers = Buffer.alloc(1024, 42); const server = net.createServer(function(c) { setTimeout(function() { const s = new tls.TLSSocket(c, { isServer: true, server: server }); s.on('error', common.mustCall(function(e) { assert.ok(e instanceof Error, 'Instance of Error should be passed to error handler'); // OpenSSL 1.0.x and 1.1.x use different error codes for junk inputs. assert.ok( /SSL routines:[^:]*:(unknown protocol|wrong version number)/.test( e.message), 'Expecting SSL unknown protocol'); })); s.on('close', function() { server.close(); s.destroy(); }); }, common.platformTimeout(200)); }).listen(0, function() { const c = net.connect({ port: this.address().port }, function() { c.write(bonkers); }); });