CancellablePromise<List<MemberInfoData>> () { return ReadAction.nonBlocking(() -> ContainerUtil.map(myMemberInfos, this::calculateMemberInfoData)) .submit(AppExecutorUtil.getAppExecutorService()) .onSuccess(data -> SwingUtilities.invokeLater(() -> repaint())); }