Как поймать ошибку node.js http на несуществующем хосте?

когда я пытаюсь использовать модуль http для доступа к несуществующему хосту, например:

requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request(
    method,
    path,
    headers
);

Но я получаю следующую ошибку:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: getaddrinfo ENOENT
    at errnoException (dns.js:31:11)
    at Object.onanswer [as oncomplete] (dns.js:140:16)

Я хотел бы поймать эту ошибку, поэтому я попробовал try/catch и установил для прослушивателей ошибок кучу свойств запроса, но ни один из них не работал. Как я могу поймать ошибку?

Ответ 1

Похоже, что ошибка выбрана из http.Client, а не запроса. Как насчет чего-то типа:

var site = http.createClient(80, host);
site.on('error', function(err) {
    sys.debug('unable to connect to ' + host);
});
var requestToRemote = site.request(...);

FYI, http.createClient устарел - следует использовать метод get get:

http.get({host: host}, function(res) {
    ...
}).on('error', function(e) {
    console.log("Got error: " + e.message);
});