var common = require('../common'); var assert = require('assert'); var http = require('http'); var net = require('net'); var server = http.createServer(function (req, res) { common.error('got req'); throw new Error("This shouldn't happen."); }); server.addListener('upgrade', function (req, socket, upgradeHead) { common.error('got upgrade event'); // test that throwing an error from upgrade gets // is uncaught throw new Error('upgrade error'); }); var gotError = false; process.addListener('uncaughtException', function (e) { common.error('got "clientError" event'); assert.equal('upgrade error', e.message); gotError = true; process.exit(0); }); server.listen(common.PORT, function () { var c = net.createConnection(common.PORT); c.addListener('connect', function () { common.error('client wrote message'); c.write("GET /blah HTTP/1.1\r\n" + "Upgrade: WebSocket\r\n" + "Connection: Upgrade\r\n" + "\r\n\r\nhello world"); }); c.addListener('end', function () { c.end(); }); c.addListener('close', function () { common.error('client close'); server.close(); }); }); process.addListener('exit', function () { assert.ok(gotError); });