@@ -182,21 +182,31 @@ Cursor.prototype.hasNext = function(callback) {
182
182
var self = this ;
183
183
184
184
// Execute using callback
185
- if ( typeof callback == 'function' ) return nextObject ( self , function ( err , doc ) {
186
- if ( ! doc ) return callback ( null , false ) ;
187
- self . s . currentDoc = doc ;
188
- callback ( null , true ) ;
189
- } ) ;
185
+ if ( typeof callback == 'function' ) {
186
+ if ( self . s . currentDoc ) {
187
+ return callback ( null , true ) ;
188
+ } else {
189
+ return nextObject ( self , function ( err , doc ) {
190
+ if ( ! doc ) return callback ( null , false ) ;
191
+ self . s . currentDoc = doc ;
192
+ callback ( null , true ) ;
193
+ } ) ;
194
+ }
195
+ }
190
196
191
197
// Return a Promise
192
198
return new this . s . promiseLibrary ( function ( resolve , reject ) {
193
- nextObject ( self , function ( err , doc ) {
194
- if ( self . s . state == Cursor . CLOSED || self . isDead ( ) ) return resolve ( false ) ;
195
- if ( err ) return reject ( err ) ;
196
- if ( ! doc ) return resolve ( false ) ;
197
- self . s . currentDoc = doc ;
199
+ if ( self . s . currentDoc ) {
198
200
resolve ( true ) ;
199
- } ) ;
201
+ } else {
202
+ nextObject ( self , function ( err , doc ) {
203
+ if ( self . s . state == Cursor . CLOSED || self . isDead ( ) ) return resolve ( false ) ;
204
+ if ( err ) return reject ( err ) ;
205
+ if ( ! doc ) return resolve ( false ) ;
206
+ self . s . currentDoc = doc ;
207
+ resolve ( true ) ;
208
+ } ) ;
209
+ }
200
210
} ) ;
201
211
}
202
212
0 commit comments