Słuchacze zdarzeń zarejestrowane dla fazy przechwytywania nie zostały wyzwolone przed propagacją - dlaczego?

Usiłuję zrozumieć, co decyduje o kolejności wywoływania procedur obsługi zdarzeń po kliknięciu zagnieżdżonego<div> - to, co widzę, wydaje się być w sprzeczności z udokumentowanym zachowaniem, więc szukam trochę pomocy, aby to zrozumieć.

Mam 2 zagnieżdżone divy, do których dołączone są dwie procedury obsługi zdarzeń, jedna dla fazy przechwytywania, a druga dla fazy propagacji:

<html>
    <head>
        <script>
            function setup(){
                var outer = document.getElementById('outer');
                outer.addEventListener('click', function(){console.log('outer false');}, false);
                outer.addEventListener('click', function(){console.log('outer true');}, true);

                var inner = document.getElementById('inner');
                inner.addEventListener('click', function(){console.log('inner false');}, false);
                inner.addEventListener('click', function(){console.log('inner true');}, true);
            }           
        </script>
        <style>
            div {
                border: 1px solid;
                padding: 1em;
            }
        </style>
    </head>
    <body onload="setup()">
        <div id="outer">
            <div id="inner">
                CLICK
            </div>
        </div>
    </body>
</html>

Wedługco przeczytałem wyjście powinno być:

outer true
inner true
inner false
outer false

ale to co widzę (w Chrome i Firefox) to:

outer true
inner false
inner true
outer false

Czy ktoś może wyjaśnić tę rozbieżność?

questionAnswers(1)

yourAnswerToTheQuestion