             return
 
         # The rest of the function is basically the same as "h(data.slice(1))", except that
-        # it ensure that we handle at most 1 message per client every 50ms (or whatever
-        # the param is below).   This is another anti-DOS measure, which of course also
-        # helps with scaling up to many users.
-
+        # it ensure that if there is a burst of messages, then (1) we handle at most 1 message
+        # per client every MESG_QUEUE_INTERVAL_MS, and we drop messages if there are too many.
+        # This is an anti-DOS measure.
+        
         @_handle_data_queue.push([h, data.slice(1)])
 
         if @_handle_data_queue_empty_function?

                delete @_handle_data_queue_empty_function
                return

            # get task
            task = @_handle_data_queue.shift()
            # do task
            task[0](task[1])
            # do next one in >=50ms
            setTimeout( @_handle_data_queue_empty_function, 50 )

        @_handle_data_queue_empty_function()


        # e.g., users storing a multi-gigabyte worksheet title,
        # etc..., which would (and will) otherwise require care with
        # every single thing we store.
        if data.length >= MESG_QUEUE_MAX_SIZE_MB * 10000000
            @error_to_client(id:mesg.id, error:"Messages are limited to #{MESG_QUEUE_MAX_SIZE_MB}MB.")

        if data.length == 0
            winston.error("EMPTY DATA MESSAGE -- ignoring!")
