mirror of https://github.com/lukechilds/node.git
Browse Source
In AsyncWrap::MakeCallback always return empty handle if there is an error. In the future this should change to return a v8::MaybeLocal, but that major change will have to wait for v6.x, and these changes are meant to be backported to v4.x. The HTTParser call to AsyncWrap::MakeCallback failed because it expected a thrown call to return an empty handle. In node::MakeCallback return an empty handle if the call is in_makecallback(), otherwise return v8::Undefined() as usual to preserve backwards compatibility. Fixes: https://github.com/nodejs/node/issues/5555 PR-URL: https://github.com/nodejs/node/pull/5591 Reviewed-By: Julien Gilli <jgilli@nodejs.org>process-exit-stdio-flushing
Trevor Norris
9 years ago
3 changed files with 31 additions and 4 deletions
@ -0,0 +1,23 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const http = require('http'); |
||||
|
|
||||
|
const uncaughtCallback = common.mustCall(function(er) { |
||||
|
assert.equal(er.message, 'get did fail'); |
||||
|
}); |
||||
|
|
||||
|
process.on('uncaughtException', uncaughtCallback); |
||||
|
|
||||
|
const server = http.createServer(function(req, res) { |
||||
|
res.writeHead(200, { 'Content-Type': 'text/plain' }); |
||||
|
res.end('bye'); |
||||
|
}).listen(common.PORT, function() { |
||||
|
http.get({ port: common.PORT }, function(res) { |
||||
|
res.resume(); |
||||
|
throw new Error('get did fail'); |
||||
|
}).on('close', function() { |
||||
|
server.close(); |
||||
|
}); |
||||
|
}); |
Loading…
Reference in new issue