This is done by creating a Promise for each tick that resolves once
all the Promises for individual tick-actions are resolved. The next
tick’s actions are not dispatched until the Promise for the current
tick is resolved.

Arguments:

chain (action.Chain) – Actions grouped by tick; each element in |chain| is a sequence of actions for one tick.

win (WindowProxy) – Current window global.

specCompatPointerOrigin (boolean) – specCompatPointerOrigin Flag to turn off the WebDriver spec conforming pointer origin calculation. It has to be kept until all Selenium bindings can successfully handle the WebDriver spec conforming Pointer Origin calculation. See https://bugzilla.mozilla.org/show_bug.cgi?id=1429338.

This creates a Promise for one tick that resolves once the Promise
for each tick-action is resolved, which takes at least |tickDuration|
milliseconds. The resolved set of events for each tick is followed by
firing of pending DOM events.

Note that the tick-actions are dispatched in order, but they may have
different durations and therefore may not end in the same order.