RxResultCursorImpl implements RxResultCursor { private void installSummaryConsumer() { pullHandler.installSummaryConsumer( ( summary, error ) -> { if ( error != null && consumerStatus.isDiscardConsumer() ) { summaryFuture.completeExceptionally( error ); } else if ( summary != null ) { summaryFuture.complete( summary ); } } ); } RxResultCursorImpl(RunResponseHandler runHandler, PullResponseHandler pullHandler );  RxResultCursorImpl(Throwable runError, RunResponseHandler runHandler, PullResponseHandler pullHandler ); @Override List<String> keys(); @Override void installRecordConsumer( BiConsumer<Record,Throwable> recordConsumer ); @Override void request( long n ); @Override void cancel(); @Override CompletionStage<Throwable> discardAllFailureAsync(); @Override CompletionStage<Throwable> pullAllFailureAsync(); @Override CompletionStage<ResultSummary> summaryAsync(); @Override boolean isDone();  }
@Test void shouldInstallSummaryConsumerWithoutReportingError() throws Throwable { RuntimeException error = new RuntimeException( "Hi" ); RunResponseHandler runHandler = newRunResponseHandler( error ); PullResponseHandler pullHandler = mock( PullResponseHandler.class ); new RxResultCursorImpl( error, runHandler, pullHandler ); verify( pullHandler ).installSummaryConsumer( any( BiConsumer.class ) ); verifyNoMoreInteractions( pullHandler ); }