| 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;};};
 |