diff --git a/runtime/src/main/java/org/capnproto/Capability.java b/runtime/src/main/java/org/capnproto/Capability.java index 9bf9e28..b7f614b 100644 --- a/runtime/src/main/java/org/capnproto/Capability.java +++ b/runtime/src/main/java/org/capnproto/Capability.java @@ -782,18 +782,16 @@ public final class Capability { @Override public VoidPromiseAndPipeline call(long interfaceId, short methodId, CallContextHook ctx) { - var promise = new CompletableFuture(); - if (this.redirect == null) { - this.queuedCalls.add(promise); - } - else { - promise.complete(this.redirect); + if (this.redirect != null) { + return this.redirect.call(interfaceId, methodId, ctx); } + var promise = new CompletableFuture(); var callResult = promise.thenApply( client -> client.call(interfaceId, methodId, ctx)); var pipelineResult = callResult.thenApply(result -> result.pipeline); var pipeline = new QueuedPipeline(pipelineResult); + this.queuedCalls.add(promise); return new VoidPromiseAndPipeline(pipelineResult.thenRun(() -> {}), pipeline); }