El enlace de datos angular no funcionará con async / wait, pero sí con promesas

Los enlaces de datos no se actualizan si sus valores cambian después de unawait declaración.

  handle() {
    this.message = 'Works'
  }

  async handle() {
    this.message = 'Works'
  }

  async handle() {
    await new Promise((resolve, reject) => {
      resolve()
    })
    this.message = 'Works'
  }

  async handle() {
    await new Promise((resolve, reject) => {
      setTimeout(() => resolve(), 3000)
    })
    this.message = 'Doesn\'t work'
  }

  handle() {
    new Promise((resolve, reject) => {
      setTimeout(() => resolve(), 3000)
    })
    .then(() => this.message = 'Works')
  }

¿Por qué los dos últimos no se comportan igual? ¿No se supone que son lo mismo?

Iónico: 3.9.2

Angular: 5.0.3

TypeScript: 2.4.2

EDITAR: Me encontré con otro problema con esto que puede ser útil para algunos.

¡Cambiar los valores de un enlace en el constructor se comporta de manera diferente a ionViewDidLoad o ngOnInit!

  constructor(private zone: NgZone) {
    // This will cause the same problems, bindings not updating
    this.handle()
  }

  constructor(private zone: NgZone) {
    // Unless you do this...
    this.zone.run(() => {
      this.handle()
    })
  }

  ionViewDidLoad() {
    // But I think this is better/cleaner
    this.handle()
  }

Respuestas a la pregunta(4)

Su respuesta a la pregunta