I think this code could be structured a little more cleanly if you gave loadCameraPreview() a callback function as its second argument. When it gets the preview stream it calls the callback.  Then you wouldn't have to hardcode the delayedInit logic into that function.