これが問題です。閉じたソケットへの書き込み時に例外が発生しましたが、おそらくプロミス内にあるため、その例外は try キャッチによってキャッチされません。
promise.then(function (val) {
try {
sock.write(val + tcpDelimiter);
} catch (err) {
logger.info('yeah right this will not work at all');
}
})
.fail(function (error) {});
さらに、メインアプリに process.uncaughtexception を追加しても役に立ちません。
コンソール出力は次のとおりです。
2012-10-04T19:22:21.109Z - error: uncaughtException date=Thu Oct 04
2012 19:22:21 GMT+0000 (UTC), pid=21508, uid=0, gid=0,
cwd=/home/ec2-user/js-proxy, execPath=/usr/bin/nodejs,
version=v0.6.18, argv=[/usr/local/bin/node,
/home/ec2-user/js-proxy/app.js, --jsproxy], rss=13914112,
heapTotal=5634752, heapUsed=4082564, loadavg=[0.0380859375,
0.08056640625, 0.060546875], uptime=1721344.103162099, trace=[column=19, file=net.js, function=Socket._write, line=474,
method=_write, native=false, column=15, file=net.js,
function=Socket.write, line=466, method=write, native=false,
column=24, file=/home/ec2-user/js-proxy/app.js, function=null,
line=408, method=null, native=false, column=32,
file=/home/ec2-user/js-proxy/node_modules/q/q.js, function=_fulfilled,
line=860, method=null, native=false, column=34,
file=/home/ec2-user/js-proxy/node_modules/q/q.js, function=null,
line=881, method=null, native=false, column=9,
file=/home/ec2-user/js-proxy/node_modules/q/q.js,
function=makePromise.promiseSend, line=553, method=promiseSend,
native=false, column=28,
file=/home/ec2-user/js-proxy/node_modules/q/q.js, function=null,
line=880, method=null, native=false, column=9,
file=/home/ec2-user/js-proxy/node_modules/q/q.js,
function=makePromise.promiseSend, line=553, method=promiseSend,
native=false, column=35,
file=/home/ec2-user/js-proxy/node_modules/q/q.js, function=, line=465,
method=null, native=false, column=38, file=node.js,
function=EventEmitter._tickCallback, line=190, method=_tickCallback,
native=false], stack=[Error: This socket is closed., at
Socket._write (net.js:474:19), at Socket.write (net.js:466:15),
at /home/ec2-user/js-proxy/app.js:408:24, at _fulfilled
(/home/ec2-user/js-proxy/node_modules/q/q.js:860:32), at
/home/ec2-user/js-proxy/node_modules/q/q.js:881:34, at
makePromise.promiseSend
(/home/ec2-user/js-proxy/node_modules/q/q.js:553:9), at
/home/ec2-user/js-proxy/node_modules/q/q.js:880:28, at
makePromise.promiseSend
(/home/ec2-user/js-proxy/node_modules/q/q.js:553:9), at
Array.<anonymous>
(/home/ec2-user/js-proxy/node_modules/q/q.js:465:35), at
EventEmitter._tickCallback (node.js:190:38)]
更新: 私は Node.js の講演に参加し、例外処理について少し学びました。どうやらそれは明らかに嫌で、無視されています。取り組んでいます。