Jassert (SIGTRAP) on iOS doesn't stop the debugger synchronously

I can reliably reproduce it in a vanilla Projucer-generated iOS xCode project. jassert doesn’t stop the LLDB debugger in the scope where it’s defined, but at a later stage, where scope is impossible to debug.

To repro:

  1. Create a JUCE GUI project on iOS. I’m on JUCE 7.0.5 now, but this has been happening for older versions too.

  2. Make a button and hook up a callback:

MainComponent::MainComponent()
{
    button.onClick = []
        {
            juce::Thread::launch([]
                {
                    DBG("before");
                    jassertfalse;
                    DBG("after");
                });
        };
    
    addAndMakeVisible(button);
    setSize (600, 400);
}

Results:
By the time debugger stops execution, before and after have already printed to console.

kill(0, SIGTRAP) (the underlying signal sent by jassert on iOS) seems to be handled asynchronously, stopping the debugger at a later time.

Am I missing something here?