You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
673 B
24 lines
673 B
"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; }); |
|
} |
|
); |
|
};
|
|
|