Quando devo rejeitar uma promessa?

Eu estou escrevendo algum código JS que usa promessas. Por exemplo, eu abro um formulário pop-up e eu retorno umjQuery Adiada objeto. Funciona assim:

Se o usuário clicar em OK no formulário e validar, o Adiado será resolvido para um objeto que representa os dados do formulário.

Se o usuário clicar em Cancelar, o Adiado será resolvido como nulo.

O que eu estou tentando decidir é se o Diferido, em vez disso, rejeitar, em vez de resolver? Mais geralmente, eu estou querendo saber quando devo resolver para algo como um objeto nulo, e quando devo rejeitar?

Aqui está um código demonstrando as duas posições:

// Resolve with null.
var promise = form.open()
    .done(function (result) {
        if (result) {
            // Do something with result.
        } else {
            // Log lack of result.
        }
    });

// Reject.
var promise = form.open()
    .done(function (result) {            
        // Do something with result.            
    })
    .fail(function () {
        // Log lack of result.
    });

questionAnswers(3)

yourAnswerToTheQuestion