/** * */ import { Duplex } from 'stream'; /** * */ export type StreamPromiseBuilder = () => { stream: Duplex; promise: Promise; }; /** * */ export class StreamPromise extends Promise { stream() { // dummy return new Duplex(); } static create(builder: StreamPromiseBuilder) { const { stream, promise } = builder(); const streamPromise = new StreamPromise((resolve, reject) => { promise.then(resolve, reject); }); streamPromise.stream = () => stream; return streamPromise; } }