function asap(task) {
    var rawTask;
    if (freeTasks.length) {
        rawTask = freeTasks.pop();
    } else {
        rawTask = new RawTask();
    }
    rawTask.task = task;
    rawAsap(rawTask);
}
Calls a task as soon as possible after returning, in its own event, with priority
over other events like animation, reflow, and repaint. An error thrown from an
event will not interrupt, nor even substantially slow down the processing of
other events, but will be rather postponed to a lower priority event.
@param {{call}} task A callable object, typically a function that takes no
arguments.