function Task(taskHandler, blocked) {
       
        var task = this;
       
        /**
         * Whether this Task is blocked.
         * 
         * @type boolean
         */
        this.blocked = blocked;

        /**
         * Unblocks this Task, allowing it to run.
         */
        this.unblock = function() {
            if (task.blocked) {
                task.blocked = false;
                __flush_frames();
            }
        };

        /**
         * Calls the handler associated with this task IMMEDIATELY. This
         * function does not track whether this task is marked as blocked.
         * Enforcing the blocked status of tasks is up to the caller.
         */
        this.execute = function() {
            if (taskHandler) taskHandler();
        };

    }
A container for an task handler. Each operation which must be ordered
is associated with a Task that goes into a task queue. Tasks in this
queue are executed in order once their handlers are set, while Tasks 
without handlers block themselves and any following Tasks from running.

@constructor
@private
@param {function} taskHandler The function to call when this task 
                              runs, if any.
@param {boolean} blocked Whether this task should start blocked.