@@ -96,7 +96,11 @@ taskSchema.statics.cancelTask = async function cancelTask(filter) {
9696 if ( filter != null ) {
9797 filter = { $and : [ { status : 'pending' } , filter ] } ;
9898 }
99- const task = await this . findOneAndUpdate ( filter , { status : 'cancelled' , cancelledAt : new Date ( ) } , { returnDocument : 'after' } ) ;
99+ const task = await this . findOneAndUpdate (
100+ filter ,
101+ { status : 'cancelled' , cancelledAt : new Date ( ) } ,
102+ { returnDocument : 'before' }
103+ ) ;
100104 return task ;
101105} ;
102106
@@ -174,7 +178,7 @@ taskSchema.statics.expireTimedOutTasks = async function expireTimedOutTasks(opti
174178 finishedRunningAt : now
175179 }
176180 } ,
177- { new : true }
181+ { returnDocument : 'before' }
178182 ) ;
179183
180184 if ( ! task ) {
@@ -281,7 +285,7 @@ taskSchema.statics.poll = async function poll(opts) {
281285 timeoutAt : new Date ( now . valueOf ( ) + 10 * 60 * 1000 ) , // 10 minutes from startedRunningAt
282286 ...additionalParams
283287 } ,
284- { new : false }
288+ { returnDocument : 'before' }
285289 ) ;
286290
287291 if ( task == null || task . status !== 'pending' ) {
@@ -322,14 +326,15 @@ taskSchema.statics.execute = async function(task, options = {}) {
322326 try {
323327 let result = null ;
324328 if ( typeof task . timeoutMS === 'number' ) {
329+ let timeoutId ;
325330 result = await Promise . race ( [
326331 Promise . resolve (
327332 this . _handlers . get ( task . name ) . call ( task , task . params , task )
328333 ) ,
329334 new Promise ( ( _ , reject ) => {
330- setTimeout ( ( ) => reject ( new Error ( `Task timed out after ${ task . timeoutMS } ms` ) ) , task . timeoutMS ) ;
335+ timeoutId = setTimeout ( ( ) => reject ( new Error ( `Task timed out after ${ task . timeoutMS } ms` ) ) , task . timeoutMS ) ;
331336 } )
332- ] ) ;
337+ ] ) . finally ( ( ) => clearTimeout ( timeoutId ) ) ;
333338 } else {
334339 result = await Promise . resolve (
335340 this . _handlers . get ( task . name ) . call ( task , task . params , task )
0 commit comments