@function makeImmutableAsynchronous

make immutable module and methods for model view.

@param {ImmutableCoreModelView} modelView

@throws {Error}
function makeImmutableAsynchronous (modelView) {
    // create new immutable module - pass allowOverride arg which if true
    // will allow module to be redefined
    modelView.module = immutable.module(modelView.moduleName, {}, {
        allowOverride: modelView.allowOverride,
    })
    // create each method
    modelView.each = immutable.method(modelView.moduleName+'.each', modelView.each)
    // create post method if defined
    if (modelView.post) {
        modelView.post = immutable.method(modelView.moduleName+'.post', modelView.post)
    }
    // create pre method if defined
    if (modelView.pre) {
        modelView.pre = immutable.method(modelView.moduleName+'.pre', modelView.pre)
    }
}