If you don't mind a non-fiber solution, here is one using callbacks:
var fs = require('fs');
var stream = fs.createReadStream('file.txt');
stream.on('data', onData).buffer = '';
function onData(chunk) {
var i, hasData = Buffer.isBuffer(chunk);
if (hasData) {
stream.buffer += chunk.toString('utf8');
if (stream.paused)
return;
}
if ((i = stream.buffer.indexOf('\n')) > -1) {
var line = stream.buffer.substring(0, i);
stream.buffer = stream.buffer.substring(i + 1);
stream.pause();
stream.paused = true;
onLine(line, onData);
} else if (!hasData) {
stream.resume();
stream.paused = false;
}
}
function onLine(line, cb) {
setTimeout(function() {
// do something with line
console.log(line);
cb();
}, 1000);
}