Angular.js $log decorator

An example of $log decorator, using text to speech HTML5 API. See http://www.jonathan-petitcolas.com/talks/2016-05-26-how-to-become-angularjs-guru.html for full presentation.

HTML

<div ng-app="myApp">
  <div ng-controller="MainCtrl">
    <button ng-click="triggerError();">Trigger Error</button>
  </div>
</div>

JavaScript

const app = angular.module('myApp', []);

const say = msg => {
  if (!window.speechSynthesis) return;

  const preparedMessage = new SpeechSynthesisUtterance(msg);
  window.speechSynthesis.speak(preparedMessage);
};
    
app.config(['$provide', $provide => {
	$provide.decorator('$log', ['$delegate', $delegate => ({
  	error: message => {
    	say(message);
      $delegate.error(message);
    }
  })]);
}]);

app.controller('MainCtrl', ($log, $scope) => {
	$scope.triggerError = () => {
  	try {
    	doSomething();
    } catch(e) {
    	$log.error(e);
    }
  }
});