From an HTML document, you can use the <link rel="modulepreload"> element to perform that integrity check, which is unfortunately currently supported only in Blink browsers.
// default script
import( "https://unpkg.com/redom@3.2.1/dist/redom.es.js" )
.then( module => console.log( 'from default script:', typeof module.List ) )
.catch( console.error );
<link rel="modulepreload"
href="https://unpkg.com/redom@3.2.1/dist/redom.es.js"
integrity="sha384-notthecorrectsha">
<script type="module">
import { List } from "https://unpkg.com/redom@3.2.1/dist/redom.es.js";
console.log( 'from module script:', typeof List );
</script>
The same snippet without the integrity check:
// default script
import( "https://unpkg.com/redom@3.2.1/dist/redom.es.js" )
.then( module => console.log( 'from default script:', typeof module.List ) )
.catch( console.error );
<link rel="modulepreload"
href="https://unpkg.com/redom@3.2.1/dist/redom.es.js">
<script type="module">
import { List } from "https://unpkg.com/redom@3.2.1/dist/redom.es.js";
console.log( 'from module script:', typeof List );
</script>
Note that this check would also apply to “sub-modules”, but not to Workers.