UPDATE : I’ve done more testing since I posted the above, and it seems that you may not actually have to include the tiny_mce_popup.js script; the wp_tiny_mce_preload_dialogs function should be sufficient
Don’t know if you are still struggling with this. I had the same issue and realized that I was missing a couple required JS dependencies. Specifically, I needed to add:
wp_enqueue_script( 'tiny_mce_popup', includes_url( 'js/tinymce/tiny_mce_popup.js' ) );
and:
add_action( 'admin_footer', 'wp_tiny_mce_preload_dialogs', 30 );
Note: use the second line if you are trying to load the editor in wp-admin. Otherwise, you should change 'admin_footer' to 'wp_footer'. Also, I added the first line in the function in the admin_init action and that worked for me.