Por que redeclarar um identificador de função em um bloco try lança um SyntaxError?

As seguintes linhas de JavaScript

try {
    function _free() {}
    var _free = 1;
} finally { }

resultar no seguinte erro:

 Uncaught SyntaxError: Identifier '_free' has already been declared

No entanto, os dois blocos a seguir do código JavaScript não:

Sem otry escopo do bloco:

function _free() {}
var _free = 1;

Dentro de umfunction escopo:

function a() {
    function _free() {}
    var _free = 1;
}

Mas por que?

(Ambiente de teste: Chromium 61.0.3126.0)

questionAnswers(2)

yourAnswerToTheQuestion