Mentioned in T131117.
Similar to the preloading of the wiki logo (T100999), it would be interesting to consider preloading for the base modules request.
By design (https://www.mediawiki.org/wiki/ResourceLoader/Features) the base modules url should not be embedded in the HTML document. This is among the reasons why we have a startup module. The startup module is supposed to be the only unversioned/mutable response, for which the url can be safely embedded in cached HTML. From that script we then bootstrap all other scripts.
As such, for the same reason we can't put the <script src> directly in the HTML, we can't emit the Link preload header from the HTML response, ether.
I read through the preload spec (https://w3c.github.io/preload/) to see whether it supports emitting preload headers from a sub resource (e.g. the startup module response could emit the url via a Preload header). While this would be discovered slightly later than if it were on the HTML Document, it is still much earlier than having to wait for the browser to download and parse the whole script, and wait for a good moment to execute it procedurally (especially given it's async/deferred).
I couldn't find in the Preload whether it supports being specified from a non-HTML response or from a sub resource, so I filed an upstream issue about it: https://github.com/w3c/preload/issues/92.
Initial response there indicates that, regardless of current spec wording, the only current implementation (Chrome) does actually support it, and that was intentionally so.