@Override
    public void addNewDataListener(Runnable listener, Executor executor) {
        synchronized (this) {
            if (newDataListeners == null)
                newDataListeners = new ArrayList<>();
            newDataListeners.add(new Tuple2<>(listener, executor));
            if (dataList.isEmpty()) return;
        }
        notifyDataListeners();
    }
Gets and removes all the data currently available in this.
The returned list is a modifiable fresh instance owned by the caller.
container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java