Почему в этом коде анонимная функция?
В js по-умолчанию this в исполняемой функции - текущий контекст. На примере, если просто выполнить функцию onReady, то ее контекст (this) будет функция setTimeout. Это решается 3 вариантами:
1. Если доступно замыкание, то....
  this.run = function() {
  var self = this;
    setTimeout(function onReady() {
    self.doSomething();
  }, getTimeToBoil());
  };
.....
2. пример с .bind(this)
3. Используем es2015 arrow function, где this не перезаписывается, а берется из замыкания....
  this.run = function() {
    setTimeout(() => {
    this.doSomething();
  }, getTimeToBoil());
  };
.....
В данном примере проблема не в контексте функции onReady, поэтому нет смысла привязывать к ней контекст. В этом примере они как раз-таки и используют возможность изменять замкнутую функцию, чтобы всякий раз ее вызывая, получать разный результат. Ваши выводы верные, но вы упускаете тот факт, что проблема здесь только на руку разработчику, потому что вызывая setOnReady он меняет сообщение, которое увидит пользователь