void (@NotNull Submission<?> task) { ThreadingAssertions.assertEventDispatchThread(); for (ContextConstraint constraint : task.builder.myConstraints) { if (constraint instanceof InSmartMode && !constraint.isCorrectContext()) { return; } } int iteration = 0; while (!task.isDone() && iteration++ < 60_000) { UIUtil.dispatchAllInvocationEvents(); try { task.blockingGet(1, TimeUnit.MILLISECONDS); return; } catch (TimeoutException ignore) { } catch (Exception e) { throw new RuntimeException(e); } } if (!task.isDone()) { //noinspection UseOfSystemOutOrSystemErr System.err.println(ThreadDumper.dumpThreadsToString()); throw new AssertionError("Too long async task " + task); } }