I've read that
<script src="jquery-3.2.1.js" defer onload="console.log('jQuery loaded', Date.now());"></script>
console.log('jQuery executed', Date.now());
The HTML5 spec is weird and hard to read, but it does say that deferred script content should be evaluated before the "load" event is fired. If you think about it, that's really a good thing: if you have some code that's waiting for a script to load, it's probably because you want to use some code that the script provided. If the "load" event fired before the script ran, it would not really be useful to have a "load" handler.
Same goes for "DOMContentReady": code waiting for that event to fire properly expects that all the script content imported by the page is ready to be exploited.