code: @Override
    public ResultScanner<FlatRow> readFlatRows(ReadRowsRequest request) {
      if (shouldOverrideAppProfile(request.getAppProfileId())) {
        request = request.toBuilder().setAppProfileId(clientDefaultAppProfileId).build();
      }
  
      // Delegate all resumable operations to the scanner. It will request a non-resumable scanner
      // during operation.
      final ResponseQueueReader reader = new ResponseQueueReader();
      RetryingReadRowsOperation operation = createReadRowsRetryListener(request, reader);
      operation.setResultObserver(new StreamObserver<ReadRowsResponse>(){
        @Override
        public void onNext(ReadRowsResponse value) {
          reader.addRequestResultMarker();
        }
        @Override public void onError(Throwable t) {}
        @Override public void onCompleted() {}
      });
  
      // Start the operation.
      operation.getAsyncResult();
  
      return new ResumingStreamingResultScanner(reader);
    }
docs: {@inheritDoc}