12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
-
- /**
- * Module dependencies.
- */
-
- var assert = require('assert');
-
- /**
- * Expose `thunkify()`.
- */
-
- module.exports = thunkify;
-
- /**
- * Wrap a regular callback `fn` as a thunk.
- *
- * @param {Function} fn
- * @return {Function}
- * @api public
- */
-
- function thunkify(fn){
- assert('function' == typeof fn, 'function required');
-
- return function(){
- var args = new Array(arguments.length);
- var ctx = this;
-
- for(var i = 0; i < args.length; ++i) {
- args[i] = arguments[i];
- }
-
- return function(done){
- var called;
-
- args.push(function(){
- if (called) return;
- called = true;
- done.apply(null, arguments);
- });
-
- try {
- fn.apply(ctx, args);
- } catch (err) {
- done(err);
- }
- }
- }
- };
|