code: @Override
    @SuppressWarnings("unchecked")
    public Task<ChangeEventT> nextEvent() throws IOException {
      return dispatcher.dispatchTask(new Callable<ChangeEventT>() {
        @Override
        public ChangeEventT call() throws Exception {
          final StitchEvent<ChangeEventT> nextEvent =
              (StitchEvent<ChangeEventT>) getInternalStream().nextEvent();
  
          if (nextEvent == null) {
            return null;
          }
          if (nextEvent.getError() != null) {
            dispatchError(nextEvent);
            return null;
          }
          if (nextEvent.getData() == null) {
            return null;
          }
  
          return nextEvent.getData();
        }
      });
    }
docs: Returns a {@link Task} whose resolution gives the next event from the underlying stream.
  @return task providing the next event
  @throws IOException if the underlying stream throws an {@link IOException}