Use `this.defer()` instead of `setTimeout()` so the timeout is canceled if the widget is destroyed.