Używanie Q.promises: jak złapać rzut asynchroniczny?

Używam Q dla obietnic, ale podczas konfigurowania niektórych testów odkrywam, że widzę sposób na wyłapywanie asynchronicznych błędów wyrzucanych w funkcji, która zwraca obietnicę.

Próbowałem zawinąć go w aQ.when i przykuty łańcuchowofail i lub jak poniżej aQ.fcall i przykuty łańcuchemfail, ale nie mogę go uruchomić.

    var func = function(){

               var deferred = Q.defer(); 
               setTimeout(function(){
                    throw new Error("async error");
               },100);

               return deferred.promise;

            }

            Q.fcall(func)
            .then(function(){
                console.log("success"); 
            })
            .fail(function(err){
                console.log(err); 
            })

Czy istnieje sposób na to?

questionAnswers(1)

yourAnswerToTheQuestion