boolean (@NotNull XDebugSession session, DataContext dataContext) { Promise<String> textPromise = getTextToEvaluate(dataContext, session); // in the case of async expression evaluation just enable the action if (textPromise.getState() == Promise.State.PENDING) { return true; } // or disable on rejected else if (textPromise.getState() == Promise.State.REJECTED) { return false; } // else the promise is already fulfilled, get it's value try { return textPromise.blockingGet(0) != null; } catch (TimeoutException | ExecutionException e) { return false; } }