@Override
    public void operationProgressed(ChannelProgressiveFuture future, long progress, long total) {
      logger.trace("{} bytes of response written on channel {}", progress, ctx.channel());
      while (chunksAwaitingCallback.peek() != null
          && progress >= chunksAwaitingCallback.peek().writeCompleteThreshold) {
        chunksAwaitingCallback.poll().resolveChunk(null);
      }
    }
Uses {@code progress} to determine chunks whose callbacks need to be invoked.
@param future the {@link ChannelProgressiveFuture} that is being listened on.
@param progress the total number of bytes that have been written starting from the time writes were invoked via
                {@link ChunkedWriteHandler}.
@param total the total number of bytes that need to be written i.e. the target number. This is not relevant to
             {@link ChunkedWriteHandler} because there is no target number. All calls to this function except
             the very last one will have a negative {@code total}.
ambry-rest/src/main/java/com/github/ambry/rest/NettyResponseChannel.java