ah, okay, now that i've read the whole file I think I understand. You can't use the existing one because it's possible for mapModules to be called before the scripts have been injected.

I think this is a problem anyways though, since we want to delay onCordovaReady (and thus onDeviceReady) until the plugins are ready.

Proposal:
1. Add a new channel to cordova/channel called onPluginsReady
2. In bootstrap.js, change:
     }, [ channel.onDOMContentLoaded, channel.onNativeReady ]);
to:
    }, [ channel.onDOMContentLoaded, channel.onNativeReady, channel.onPluginsReady ]);
3. Don't execute the <runs> modules until onCordovaReady is fired.

The only trick now is that this will never boot when not using cordova-cli. Maybe we could fix this by:

Change:
    if (window._nativeReady) {
        channel.onNativeReady.fire();
    }

to:
    if (window._nativeReady) {
        channel.onNativeReady.fire();
    }
    if (!window._cordovaCLI) {
        channel.onPluginsReady.fire();
    }

And then have cordova prepare prepend a "_cordovaCLI = true" statement to the beginning of cordova.js