Ich vermute das liegt daran, dass das ganze in Threads läuft. Vielleicht blockierst du mit der Schleife eine Synchronisierung mit dem Hauptthread, so dass ein Thread darauf wartet das Ergebnis abzuliefern.
Das Polling ist aber ohnehin keine gute Idee. Du solltest deinen Quelltext besser so umbauen, dass er korrekt auf den Callback reagiert und die Verarbeitung dort macht.
Unter Android und iOS wird diese Arbeitsweise noch viel stärker forciert. Eben weil das die
GUI in aller Regel deutlich responsiver macht.