docs: @Override
  	public GetRecordsResult getRecords(String shardIterator, int maxRecordsToGet) throws InterruptedException {
  		final GetRecordsRequest getRecordsRequest = new GetRecordsRequest();
  		getRecordsRequest.setShardIterator(shardIterator);
  		getRecordsRequest.setLimit(maxRecordsToGet);
  
  		GetRecordsResult getRecordsResult = null;
  
  		int retryCount = 0;
  		while (retryCount <= getRecordsMaxRetries && getRecordsResult == null) {
  			try {
  				getRecordsResult = kinesisClient.getRecords(getRecordsRequest);
  			} catch (SdkClientException ex) {
  				if (isRecoverableSdkClientException(ex)) {
  					long backoffMillis = fullJitterBackoff(
  						getRecordsBaseBackoffMillis, getRecordsMaxBackoffMillis, getRecordsExpConstant, retryCount++);
  					LOG.warn("Got recoverable SdkClientException. Backing off for "
  						+ backoffMillis + " millis (" + ex.getClass().getName() + ": " + ex.getMessage() + ")");
  					Thread.sleep(backoffMillis);
  				} else {
  					throw ex;
  				}
  			}
  		}
  
  		if (getRecordsResult == null) {
  			throw new RuntimeException("Retries exceeded for getRecords operation - all " + getRecordsMaxRetries +
  				" retry attempts failed.");
  		}
  
  		return getRecordsResult;
  	}