Na sintaxe `import 'do ES6, como um módulo é avaliado exatamente?

Digamos que temos quatro módulos,A, B,C eD

No móduloA:

console.log("A evaluated")
function AClass {
  console.log("A constructor")
}
var aObj = new AClass()
export default aObj;

No móduloB:

import aObj from A
export default "B"

No móduloC:

import aObj from A
export default "C"

No móduloD:

import b from B
import c from C
import aObj from A

Então, quando o móduloD é avaliado, quantas vezes oA evaluated eA constructor ser impresso no console?

Esse comportamento é descrito emPadrão ES6? O que devo fazer se quiser que um módulo seja avaliado SOMENTE UMA VEZ, não importa quantas vezes seja importado direta ou indiretamente? Alguém tem alguma ideia sobre isso?

questionAnswers(1)

yourAnswerToTheQuestion