if (this.resolved)
return;
- try {
- this.accept(value, sync);
- }
- catch (e) {
- this.reject(e, sync);
+ var then = (value && value.then && value.then.apply) ? value.then : null;
+ if (then) {
+ var self = this;
+ var acceptCallback = function(arg) {
+ self.accept(arg, true);
+ };
+ var rejectCallback = function(arg) {
+ self.reject(arg, true);
+ };
+ try {
+ then.apply(value, [acceptCallback, rejectCallback]);
+ }
+ catch (e) {
+ this.reject(e, true);
+ }
}
+
+ this.accept(value, sync);
};
acceptWrapper = function(arg) {
try {
var value = acceptCB.apply(future, [arg]);
- resolver.accept(value, true);
+ resolver.resolve(value, true);
}
catch (e) {
resolver.reject(e, true);
rejectWrapper = function(arg) {
try {
var value = rejectCB.apply(future, [arg]);
- resolver.reject(value, true);
+ resolver.resolve(value, true);
}
catch (e) {
resolver.reject(e, true);