The signal was not connect using the std::function signalCallable. Therefore the signal would never trigger the QEventLoop::quit() slot, and UI would be stuck waiting for the time out.