The following should work for both v4 and v5 (disclaimer):
fromStream: function (stream, finishEventName, dataEventName) {
stream.pause();
finishEventName || (finishEventName = 'end');
dataEventName || (dataEventName = 'data');
return Observable.create(function (observer) {
const data$ = Observable.fromEvent(stream, dataEventName);
const error$ = Observable.fromEvent(stream, 'error')
.flatMap(err => Observable.throw(err));
const complete$ = Observable.fromEvent(stream, finishEventName);
const sub = data$
.merge(error$)
.takeUntil(complete$)
.subscribe(observer);
stream.resume();
return sub;
})
.share();
},