code: @Override
      public boolean hasNext()
      {
          // Check & clear interrupted flag so we don't get an
          // InterruptedException every time if the user
          // doesn't clear it / deal with it.
          boolean interrupted = Thread.interrupted();
          Boolean dataLoaded = null;
  
          try
          {
              while (!currentIteratorHasNext() && dataLoaded == null)
              {
                  try
                  {
                      dataLoaded = tryLoadNextChunkIterator();
                  }
                  catch (InterruptedException ex)
                  {
                      interrupted = true;
                  }
              }
              return currentIteratorHasNext();
          }
          finally
          {
              if (interrupted)
              {
                  // Reset interrupted flag if we came in with it
                  // or we were interrupted while waiting.
                  Thread.currentThread().interrupt();
              }
          }
      }
docs: Returns {@code true} if the iteration has more elements.
  (In other words, returns {@code true} if {@link #next} would
  return an element rather than throwing an exception.)
  
  This method will block and wait for more data if none is immediately available.
  
  <b>Riak Java Client Note:</b> Since this class polls for
  new "streaming" data, it is advisable to check {@link Thread#isInterrupted()}
  in environments where thread interrupts must be obeyed.
  
  @return {@code true} if the iteration has more elements