diff --git a/runtime-rpc/src/main/java/org/capnproto/RpcState.java b/runtime-rpc/src/main/java/org/capnproto/RpcState.java index df85489..dcf2904 100644 --- a/runtime-rpc/src/main/java/org/capnproto/RpcState.java +++ b/runtime-rpc/src/main/java/org/capnproto/RpcState.java @@ -758,10 +758,12 @@ final class RpcState { if (ctx != null) { ctx.requestCancel(); } - else { - var questionId = finish.getQuestionId(); - answers.erase(questionId); - } + + // Remove question id + // this is a different then c++ implementation, but it is required as java's promises doesn't support + // all features of kj's promises + var questionId = finish.getQuestionId(); + answers.erase(questionId); if (exportsToRelease != null) { this.releaseExports(exportsToRelease);