Difference between launchAsync() and runModal()

I'm creating a stadard DialogWindow using DialogWindow::LaunchOptions

I define a content component using 

juce::DialogWindow::LaunchOptions aDialog;

Now, if I call runModal(), the content component is displayed correctly, but because modal loops are evil, I tried to use launchAsync() instead, and now, the content component isn't displayed anymore. Any idea why that might be happening ? I think it only happens on windows, not mac, but I can't test right now

Most likely because you're deleting the content component before the window has finished running.

Well I checked and the content component is destroyed right after the window has finished running. Any other idea maybe ?