def METHOD_NAME(self):
    """
    Loop which runs in it's own thread, pushing chunks as they come in. Because we now run sending and recieving
    in separate threads, and keep the socket open for the entire duration, we don't need to batch puts.
    """
    connection = b'keep-alive'
    while self._alive:
        try:
            filename, data = self._put_queue.get(timeout=.1)
            if data is None:
                connection = b'close'
                data = b''
            if self._filter is not None:
                # allow us to do, e.g. compression in the spooling thread
                data = self._filter(data)
            dl = len(data)
            header = b'PUT /%s HTTP/1.1\r\nConnection: %s\r\nContent-Length: %d\r\n\r\n' % (
                filename.encode(), connection, dl)
            logger.debug(header)
            self._socket.sendall(header)
            if dl > 0:
                self._socket.sendall(data)
            self._put_queue.task_done()
            self._rc_queue.put((filename, dl))
            #datalen += dl
            #nChunksSpooled += 1
            #nChunksRemaining -= 1
        except queue.Empty:
            pass