async closeOutputStream() { this.outputStream.end(); const streamPromise = new Promise((resolve) => { if (this.outputStream instanceof fs.WriteStream) { this.outputStream.on('finish', (_fd) => { resolve(); }); } else { resolve(); } }); const timeoutPromise = new Promise((resolve) => { setTimeout(resolve, 1000); }); return Promise.race([streamPromise, timeoutPromise]).then(() => { this.outputStream = undefined; }); }
async setOutputStream(outputPath) { const ConsoleStream = require('console-stream'); const stream = outputPath ? fs.createWriteStream(outputPath) : ConsoleStream(); const streamPromise = new Promise((resolve) => { if (stream instanceof fs.WriteStream) { stream.once('ready', (_fd) => { this.outputStream = stream; resolve(); }); } else { this.outputStream = stream; resolve(); } }); const timeoutPromise = new Promise((resolve) => { setTimeout(resolve, 2000); this.outputStream = stream; }); return Promise.race([streamPromise, timeoutPromise]).then(() => { }); }