Return Observable em canDeactivate não está funcionando

Eu tenho uma caixa de diálogo modal de confirmação / cancelamento que aparece quando um usuário sai de uma rota. Eu faço isso usando uma proteção com o método canDeactivate. No entanto, eu quero que canDeactivate aguarde até obter uma resposta do modal antes de retornar qualquer coisa.

Eu tentei fazer isso retornando um observável, mas não está funcionando.

canDeactivate(): Observable<boolean> | boolean {
    if(this.isFormStarted()) {
        this.formService.showExitModal(true);
        return this.formService.getModalSelectionObservable();
    }
    else {
        return true;
    }
}

Nada está acontecendo quando clico em confirmar, embora eu possa ver que o observável está funcionando bem quando eu faço um console.log dentro do bloco if

this.formService.getModalSelectionObservable().subscribe(
        value => console.log("dialog value: " + value)
    );

Aqui está a aparência do serviço de formulário.

private modalConfirmation = new Subject<boolean>();

public setModalSelectionObservable(confirmLeave: boolean) {
    this.modalConfirmation.next(confirmLeave);
}
public getModalSelectionObservable(): Observable<boolean> {
    return this.modalConfirmation.asObservable();
}

questionAnswers(2)

yourAnswerToTheQuestion