diff --git a/java/org/cef/browser/CefDevToolsClient.java b/java/org/cef/browser/CefDevToolsClient.java index 3fed09f5..108390f8 100644 --- a/java/org/cef/browser/CefDevToolsClient.java +++ b/java/org/cef/browser/CefDevToolsClient.java @@ -36,7 +36,6 @@ public void onDevToolsMethodResult( future.completeExceptionally( new DevToolsException("DevTools method failed", result)); } - removeQueuedCommand(messageId); } @Override @@ -63,10 +62,6 @@ private CompletableFuture getQueuedCommand(Integer messageId) { return queuedCommands_.computeIfAbsent(messageId, key -> new CompletableFuture<>()); } - private void removeQueuedCommand(Integer messageId) { - queuedCommands_.remove(messageId); - } - /** * Execute a method call over the DevTools protocol. See the DevTools protocol documentation @@ -105,8 +100,11 @@ public CompletableFuture executeDevToolsMethod(String method, String par return future; } - return browser_.executeDevToolsMethod(method, parametersAsJson) - .thenCompose(this::getQueuedCommand); + return browser_.executeDevToolsMethod(method, parametersAsJson).thenCompose(messageId -> { + CompletableFuture queuedCommand = getQueuedCommand(messageId); + return queuedCommand.whenComplete( + (result, throwable) -> queuedCommands_.remove(messageId, queuedCommand)); + }); } /**