Как AMD (в частности, RequireJs) обрабатывает зависимости между несколькими модулями

У меня есть мой основной скрипт инициализации, который вызывает require (), и одна из зависимостей - это инфраструктура утилит, но некоторые другие модули, которые я определяю с помощью require (), также сами определили эту платформу как зависимость.

Например (init.js):

require(['module-a', 'module-b', 'module-c'], function(a, b, c){
    // where module-c is the framework
});

И тогда в 'module-a' у меня есть:

define(['module-c'], function(c){
    // utilize module-c framework
});

Так как же AMD / RequireJ справляется с этим сценарием, загружает ли он один и тот же каркас дважды?

Любая помощь приветствуется.

С уважением, Марк