(value, callback, errback)
| 6949 | * @returns {Promise} Returns a promise of the passed value or promise |
| 6950 | */ |
| 6951 | var when = function(value, callback, errback) { |
| 6952 | var result = defer(), |
| 6953 | done; |
| 6954 | |
| 6955 | var wrappedCallback = function(value) { |
| 6956 | try { |
| 6957 | return (callback || defaultCallback)(value); |
| 6958 | } catch (e) { |
| 6959 | exceptionHandler(e); |
| 6960 | return reject(e); |
| 6961 | } |
| 6962 | }; |
| 6963 | |
| 6964 | var wrappedErrback = function(reason) { |
| 6965 | try { |
| 6966 | return (errback || defaultErrback)(reason); |
| 6967 | } catch (e) { |
| 6968 | exceptionHandler(e); |
| 6969 | return reject(e); |
| 6970 | } |
| 6971 | }; |
| 6972 | |
| 6973 | nextTick(function() { |
| 6974 | ref(value).then(function(value) { |
| 6975 | if (done) return; |
| 6976 | done = true; |
| 6977 | result.resolve(ref(value).then(wrappedCallback, wrappedErrback)); |
| 6978 | }, function(reason) { |
| 6979 | if (done) return; |
| 6980 | done = true; |
| 6981 | result.resolve(wrappedErrback(reason)); |
| 6982 | }); |
| 6983 | }); |
| 6984 | |
| 6985 | return result.promise; |
| 6986 | }; |
| 6987 | |
| 6988 | |
| 6989 | function defaultCallback(value) { |
nothing calls this directly
no test coverage detected