123456789101112131415161718192021222324 |
- "use strict";
- var ensurePlainFunction = require("type/plain-function/ensure")
- , isThenable = require("type/thenable/is")
- , ensureThenable = require("type/thenable/ensure");
- var resolveCallback = function (callback, next) {
- var callbackResult = callback();
- if (!isThenable(callbackResult)) return next();
- return callbackResult.then(next);
- };
- module.exports = function (callback) {
- ensureThenable(this);
- ensurePlainFunction(callback);
- return this.then(
- function (result) {
- return resolveCallback(callback, function () { return result; });
- },
- function (error) {
- return resolveCallback(callback, function () { throw error; });
- }
- );
- };
|