(reaction, state)
| 10959 | }; |
| 10960 | |
| 10961 | var callReaction = function (reaction, state) { |
| 10962 | var value = state.value; |
| 10963 | var ok = state.state === FULFILLED; |
| 10964 | var handler = ok ? reaction.ok : reaction.fail; |
| 10965 | var resolve = reaction.resolve; |
| 10966 | var reject = reaction.reject; |
| 10967 | var domain = reaction.domain; |
| 10968 | var result, then, exited; |
| 10969 | try { |
| 10970 | if (handler) { |
| 10971 | if (!ok) { |
| 10972 | if (state.rejection === UNHANDLED) onHandleUnhandled(state); |
| 10973 | state.rejection = HANDLED; |
| 10974 | } |
| 10975 | if (handler === true) result = value; |
| 10976 | else { |
| 10977 | if (domain) domain.enter(); |
| 10978 | result = handler(value); // can throw |
| 10979 | if (domain) { |
| 10980 | domain.exit(); |
| 10981 | exited = true; |
| 10982 | } |
| 10983 | } |
| 10984 | if (result === reaction.promise) { |
| 10985 | reject(new TypeError('Promise-chain cycle')); |
| 10986 | } else if (then = isThenable(result)) { |
| 10987 | call(then, result, resolve, reject); |
| 10988 | } else resolve(result); |
| 10989 | } else reject(value); |
| 10990 | } catch (error) { |
| 10991 | if (domain && !exited) domain.exit(); |
| 10992 | reject(error); |
| 10993 | } |
| 10994 | }; |
| 10995 | |
| 10996 | var notify = function (state, isReject) { |
| 10997 | if (state.notified) return; |
no test coverage detected
searching dependent graphs…