feat(smartduplex): improve backpressure handling and web/node stream interoperability
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
import * as plugins from './smartstream.plugins.js';
|
||||
|
||||
// interfaces
|
||||
import { Transform } from 'stream';
|
||||
|
||||
export interface IErrorFunction {
|
||||
(err: Error): any;
|
||||
}
|
||||
@@ -82,15 +79,17 @@ export class StreamWrapper {
|
||||
|
||||
this.streamStartedDeferred.resolve();
|
||||
|
||||
finalStream.on('end', () => {
|
||||
done.resolve();
|
||||
});
|
||||
finalStream.on('close', () => {
|
||||
done.resolve();
|
||||
});
|
||||
finalStream.on('finish', () => {
|
||||
done.resolve();
|
||||
});
|
||||
let resolved = false;
|
||||
const safeResolve = () => {
|
||||
if (!resolved) {
|
||||
resolved = true;
|
||||
done.resolve();
|
||||
}
|
||||
};
|
||||
|
||||
finalStream.on('end', safeResolve);
|
||||
finalStream.on('close', safeResolve);
|
||||
finalStream.on('finish', safeResolve);
|
||||
return done.promise;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user