| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- "use strict";
 
- module.exports = function(Promise) {
 
- var util = require("./util");
 
- var async = Promise._async;
 
- var tryCatch = util.tryCatch;
 
- var errorObj = util.errorObj;
 
- function spreadAdapter(val, nodeback) {
 
-     var promise = this;
 
-     if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);
 
-     var ret =
 
-         tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));
 
-     if (ret === errorObj) {
 
-         async.throwLater(ret.e);
 
-     }
 
- }
 
- function successAdapter(val, nodeback) {
 
-     var promise = this;
 
-     var receiver = promise._boundValue();
 
-     var ret = val === undefined
 
-         ? tryCatch(nodeback).call(receiver, null)
 
-         : tryCatch(nodeback).call(receiver, null, val);
 
-     if (ret === errorObj) {
 
-         async.throwLater(ret.e);
 
-     }
 
- }
 
- function errorAdapter(reason, nodeback) {
 
-     var promise = this;
 
-     if (!reason) {
 
-         var newReason = new Error(reason + "");
 
-         newReason.cause = reason;
 
-         reason = newReason;
 
-     }
 
-     var ret = tryCatch(nodeback).call(promise._boundValue(), reason);
 
-     if (ret === errorObj) {
 
-         async.throwLater(ret.e);
 
-     }
 
- }
 
- Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,
 
-                                                                      options) {
 
-     if (typeof nodeback == "function") {
 
-         var adapter = successAdapter;
 
-         if (options !== undefined && Object(options).spread) {
 
-             adapter = spreadAdapter;
 
-         }
 
-         this._then(
 
-             adapter,
 
-             errorAdapter,
 
-             undefined,
 
-             this,
 
-             nodeback
 
-         );
 
-     }
 
-     return this;
 
- };
 
- };
 
 
  |