Open
Description
- Version: 10.16.3
- Platform: Ubuntu 16.04.1
- Subsystem: tls
There seems to be no way to catch synchronous error of underlying duplex stream during tls.connect
operation.
Code sample:
const stream = require('stream');
const tls = require('tls');
const async = false;
process.on('uncaughtException', e=>console.log('uncaught: '+e));
const socket = new stream.Duplex({
read(size){},
write(data, encoding, cb){
let error = new Error('intended error');
if (async)
setTimeout(()=>cb(error), 1000);
else
cb(error);
},
});
socket.on('error', e=>console.log('socket error: '+e));
const tls_socket = tls.connect({socket});
tls_socket.on('error', e=>console.log('tls_socket error: '+e));
Expected output:
socket error: Error: intended error
tls_socket error: Error: intended error
Actual output:
socket error: Error: intended error
uncaught: Error: intended error
Changing async
to true solves the issue.
Can we allow passing onError
handler to tls.connect
method? So, it will be set before calling _start()
method of TLSSocket.