Fetch intermediate response from client

We have a workflow with 3 steps - A, B and C. After completion of B, we store the intermediate-result in a variable in the workflow class and workflow goes to wait state. On a ‘signal’ method call, the workflow wakes up and continues step C and then completes with final result (also stored as another variable in workflow class).
Now, from a client we initiate the workflow in async way and then the client is expected to wait till the intermediate-result is available in the workflow class, but will not wait for the workflow completion.
I have used a CompletablePromise variable to hold the intermediate-result. But when calling get() method on this variable from the client in order to wait-n-retrieve the value of intermediate-result, it throws error saying something like “some non-workflow thread is trying to access the get() method”. I understand that only workflow execution thread is allowed to extract/access this CompletablePromise instance.
Is there any other way to “wait and get” the value of this intermediate-result from the client after instantiating the workflow (same thread).

//code snippet

BatchPayout batchPayout = this.client.newWorkflowStub(BatchPayout.class, options);
WorkflowClient.start(batchPayout::execute, metadata, payoutBatchData);
//here we need to wait and get

The current solution is to start a workflow and then call an update. See the synchronous booking saga sample.