| var abort = require('./abort.js') | 
|   , async = require('./async.js') | 
|   ; | 
|   | 
| // API | 
| module.exports = terminator; | 
|   | 
| /** | 
|  * Terminates jobs in the attached state context | 
|  * | 
|  * @this  AsyncKitState# | 
|  * @param {function} callback - final callback to invoke after termination | 
|  */ | 
| function terminator(callback) | 
| { | 
|   if (!Object.keys(this.jobs).length) | 
|   { | 
|     return; | 
|   } | 
|   | 
|   // fast forward iteration index | 
|   this.index = this.size; | 
|   | 
|   // abort jobs | 
|   abort(this); | 
|   | 
|   // send back results we have so far | 
|   async(callback)(null, this.results); | 
| } |