diff --git a/lib/readLines.js b/lib/readLines.js index 0977b1c..106e9be 100644 --- a/lib/readLines.js +++ b/lib/readLines.js @@ -2,6 +2,7 @@ const fsExtra = require("fs-extra"); const Promise = require("bluebird"); const readline = require("readline"); +const events = require("events"); module.exports = readLines; @@ -15,23 +16,25 @@ module.exports = readLines; * @private */ function readLines(path, callback) { - return new Promise(function (resolve, reject) { - const stream = fsExtra.createReadStream(path); - stream.on("error", reject); - stream.on("end", resolve); + const stream = fsExtra.createReadStream(path); + return events.once(stream, "open").then(function () { + return new Promise(function (resolve, reject) { + stream.on("error", reject); + stream.on("end", resolve); - const lineReader = readline.createInterface({ - input: stream, + const lineReader = readline.createInterface({ + input: stream, + }); + + const callbackWrapper = function (line) { + try { + callback(line); + } catch (error) { + reject(error); + } + }; + + lineReader.on("line", callbackWrapper); }); - - const callbackWrapper = function (line) { - try { - callback(line); - } catch (error) { - reject(error); - } - }; - - lineReader.on("line", callbackWrapper); }); }