Skip to content

Commit 79c0909

Browse files
committed
refactor(ChangeStream): use maybePromise for next/hasNext
NODE-2570
1 parent f71f09b commit 79c0909

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

lib/change_stream.js

+12-13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const EventEmitter = require('events');
44
const { MongoError, isResumableError } = require('./error');
55
const { Cursor } = require('./cursor');
66
const { relayEvents, maxWireVersion } = require('./utils');
7+
const maybePromise = require('./utils').maybePromise;
78
const AggregateOperation = require('./operations/aggregate');
89

910
const CHANGE_STREAM_OPTIONS = ['resumeAfter', 'startAfter', 'startAtOperationTime', 'fullDocument'];
@@ -124,10 +125,10 @@ class ChangeStream extends EventEmitter {
124125
* @function ChangeStream.prototype.hasNext
125126
* @param {ChangeStream~resultCallback} [callback] The result callback.
126127
* @throws {MongoError}
127-
* @returns {Promise} returns Promise if no callback passed
128+
* @returns {Promise|void} returns Promise if no callback passed
128129
*/
129130
hasNext(callback) {
130-
return this.cursor.hasNext(callback);
131+
return maybePromise(this.parent, callback, cb => this.cursor.hasNext(cb));
131132
}
132133

133134
/**
@@ -136,19 +137,17 @@ class ChangeStream extends EventEmitter {
136137
* @function ChangeStream.prototype.next
137138
* @param {ChangeStream~resultCallback} [callback] The result callback.
138139
* @throws {MongoError}
139-
* @returns {Promise} returns Promise if no callback passed
140+
* @returns {Promise|void} returns Promise if no callback passed
140141
*/
141142
next(callback) {
142-
var self = this;
143-
if (this.isClosed()) {
144-
if (callback) return callback(new Error('Change Stream is not open.'), null);
145-
return self.promiseLibrary.reject(new Error('Change Stream is not open.'));
146-
}
147-
148-
return this.cursor
149-
.next()
150-
.then(change => processNewChange({ changeStream: self, change, callback }))
151-
.catch(error => processNewChange({ changeStream: self, error, callback }));
143+
return maybePromise(this.parent, callback, cb => {
144+
if (this.isClosed()) {
145+
return cb(new Error('Change Stream is not open.'));
146+
}
147+
this.cursor.next((error, change) => {
148+
processNewChange({ changeStream: this, error, change, callback: cb });
149+
});
150+
});
152151
}
153152

154153
/**

0 commit comments

Comments
 (0)