Como resolver dependência circular em Require.js?

Basicamente, a idéia é que o módulo "sub" cria um objeto, e esse objeto deve fazer parte de uma biblioteca de utilidades que é o módulo "principal". No entanto, o objeto "sub"Depende em utilitários de "main":

// Main module
define(['sub'], function(sub) {
    var utils = {
        utilityMain: function () {
           // ...
        };
        // ...
    };

    tools.subModule = sub;

    return tools;
});

// Sub module
define(['main'], function(main) {
    return new (function () {

        // Singleton object using functions in main module
        var somestuff = function () {
            main.utilityMain();
            // etc
        };
    })();
});   

Como posso conseguir isso com require.js sem criar um buraco negro que engole todo o planeta?

Muito obrigado.

questionAnswers(1)

yourAnswerToTheQuestion