(value, callback, errback, progressback)
| 11900 | * @returns {Promise} Returns a promise of the passed value or promise |
| 11901 | */ |
| 11902 | var when = function(value, callback, errback, progressback) { |
| 11903 | var result = defer(), |
| 11904 | done; |
| 11905 | |
| 11906 | var wrappedCallback = function(value) { |
| 11907 | try { |
| 11908 | return (isFunction(callback) ? callback : defaultCallback)(value); |
| 11909 | } catch (e) { |
| 11910 | exceptionHandler(e); |
| 11911 | return reject(e); |
| 11912 | } |
| 11913 | }; |
| 11914 | |
| 11915 | var wrappedErrback = function(reason) { |
| 11916 | try { |
| 11917 | return (isFunction(errback) ? errback : defaultErrback)(reason); |
| 11918 | } catch (e) { |
| 11919 | exceptionHandler(e); |
| 11920 | return reject(e); |
| 11921 | } |
| 11922 | }; |
| 11923 | |
| 11924 | var wrappedProgressback = function(progress) { |
| 11925 | try { |
| 11926 | return (isFunction(progressback) ? progressback : defaultCallback)(progress); |
| 11927 | } catch (e) { |
| 11928 | exceptionHandler(e); |
| 11929 | } |
| 11930 | }; |
| 11931 | |
| 11932 | nextTick(function() { |
| 11933 | ref(value).then(function(value) { |
| 11934 | if (done) return; |
| 11935 | done = true; |
| 11936 | result.resolve(ref(value).then(wrappedCallback, wrappedErrback, wrappedProgressback)); |
| 11937 | }, function(reason) { |
| 11938 | if (done) return; |
| 11939 | done = true; |
| 11940 | result.resolve(wrappedErrback(reason)); |
| 11941 | }, function(progress) { |
| 11942 | if (done) return; |
| 11943 | result.notify(wrappedProgressback(progress)); |
| 11944 | }); |
| 11945 | }); |
| 11946 | |
| 11947 | return result.promise; |
| 11948 | }; |
| 11949 | |
| 11950 | |
| 11951 | function defaultCallback(value) { |
nothing calls this directly
no test coverage detected