diff --git a/lib/fs.js b/lib/fs.js index ec4a1e9a9fb..3cdf498f6b0 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -2051,6 +2051,7 @@ ReadStream.prototype.open = function() { self.fd = fd; self.emit('open', fd); + self.emit('ready'); // start the flow of data. self.read(); }); @@ -2207,6 +2208,7 @@ WriteStream.prototype.open = function() { this.fd = fd; this.emit('open', fd); + this.emit('ready'); }); }; diff --git a/lib/net.js b/lib/net.js index c0b4db81e67..e3cd8559b98 100644 --- a/lib/net.js +++ b/lib/net.js @@ -1188,6 +1188,7 @@ function afterConnect(status, handle, req, readable, writable) { self._unrefTimer(); self.emit('connect'); + self.emit('ready'); // start the first read, or get an immediate EOF. // this doesn't actually consume any bytes, because len=0. diff --git a/test/parallel/test-fs-ready-event-stream.js b/test/parallel/test-fs-ready-event-stream.js new file mode 100644 index 00000000000..71f7aa76e36 --- /dev/null +++ b/test/parallel/test-fs-ready-event-stream.js @@ -0,0 +1,13 @@ +'use strict'; +const common = require('../common'); +const fs = require('fs'); +const path = require('path'); +const tmpdir = require('../common/tmpdir'); + +const readStream = fs.createReadStream(__filename); +readStream.on('ready', common.mustCall(() => {}, 1)); + +const writeFile = path.join(tmpdir.path, 'write-fsreadyevent.txt'); +tmpdir.refresh(); +const writeStream = fs.createWriteStream(writeFile, { autoClose: true }); +writeStream.on('ready', common.mustCall(() => {}, 1)); diff --git a/test/parallel/test-net-socket-ready-without-cb.js b/test/parallel/test-net-socket-ready-without-cb.js new file mode 100644 index 00000000000..1ad5db4760d --- /dev/null +++ b/test/parallel/test-net-socket-ready-without-cb.js @@ -0,0 +1,20 @@ +'use strict'; +const common = require('../common'); + +// This test ensures that socket.connect can be called without callback +// which is optional. + +const net = require('net'); + +const server = net.createServer(common.mustCall(function(conn) { + conn.end(); + server.close(); +})).listen(0, common.mustCall(function() { + const client = new net.Socket(); + + client.on('ready', common.mustCall(function() { + client.end(); + })); + + client.connect(server.address()); +}));