Método encadeado com async / waitit no TypeScript

Eu tenho uma situação em que preciso chamar um método assíncrono no resultado de um método assíncrono.

class Parent {
  constructor(private child: Child) { }

  private getChild(): Promise<Child> {
    return Promise.resolve(this.child);
  }

  async getResult(): Promise<Child> {
     return await this.getChild()
  }
}

class Child {
  getText(): Promise<string> {
    return Promise.resolve('text');
  }
}

let child = new Child();
let container = new Parent(child);

let printText = async () => {
  await (await container.getResult()).getText();
}

printText();

Existe uma boa maneira de evitar a necessidade de aguardar duas vezes? Eu acho que gostaria de fazerawait container.getChild().getText();. Qual é a maneira correta de criar uma API no TypeScript que me permita encadear métodos que retornam promessas e aguardar o resultado com uma única espera?

EDIT: Para esclarecer, esta é mais uma questão de design de API. Existe um padrão melhor para fazer o que estou tentando fazer (chamar um método assíncrono em um objeto retornado por um método assíncrono)? Mesmo que isso signifique fazer algo totalmente diferente?

questionAnswers(1)

yourAnswerToTheQuestion