code: @Override
    public ResultScanner getScanner(Scan scan) {
      LOG.trace("getScanner(Scan)");
      final Span span = TRACER.spanBuilder("BigtableTable.scan").startSpan();
      try (Scope scope = TRACER.withSpan(span)) {
        com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> scanner =
            clientWrapper.readFlatRows(hbaseAdapter.adapt(scan));
        if (AbstractBigtableTable.hasWhileMatchFilter(scan.getFilter())) {
          return Adapters.BIGTABLE_WHILE_MATCH_RESULT_RESULT_SCAN_ADAPTER.adapt(scanner, span);
        }
        return Adapters.BIGTABLE_RESULT_SCAN_ADAPTER.adapt(scanner, span);
      } catch (final Throwable throwable) {
        LOG.error("Encountered exception when executing getScanner.", throwable);
        span.setStatus(Status.UNKNOWN);
        // Close the span only when throw an exception and not on finally because if no exception
        // the span will be ended by the adapter.
        span.end();
        return new ResultScanner() {
          @Override
          public boolean renewLease() {
            return false;
          }
          @Override
          public Result next() throws IOException {
             throw throwable;
          }
          @Override
          public ScanMetrics getScanMetrics() {
            return null;
          }
          @Override
          public void close() {
          }
        };
      }
    }
docs: {@inheritDoc}