Resolva a promessa com um objeto com uma função “depois”

Isso é um pouco de uma questão abstrata, já que não tenho um caso de uso específico no momento. Eu notei que se você resolve uma promessa com uma promessa

var deferredA = $q.defer();
var deferredB = $q.defer();
deferredA.promise.then(function(result) {
  // Will get here once promiseB has been resolved.
});
deferredA.resolve(deferredB.promise);

do que o promiseA não é realmente resolvido até que o promiseB tenha sido resolvido (e então o promiseA é resolvido com o valor da resolução do promiseB). No entanto, e se eu quisesse resolver com um valor de um objeto com uma função "then", como:

var deferred = $q.defer();
deferred.promise.then(function(result) {
  // Aim is to get here with result = {then:function(){}},
  // as though I had resolved a promise with a non-promise value,
  // but this function is never called
});
deferred.resolve({
  then: function() {
  }
});

then promiseA nunca é realmente resolvida, pois assumiu que o valor é uma promessa, mesmo que no exemplo acima não seja, como em, não foi criado com $ q.defer (). Há um exemplo plunkr em

http://plnkr.co/edit/Z8XUKzxHtGBKBmgPed2q?p=preview

Existe uma maneira de contornar isso? Se sim, como?

Editar: esclarecido diferido / promessa e colocar no exemplo ", em seguida," retornos de chamada.

questionAnswers(3)

yourAnswerToTheQuestion