From the API docs:
Only one transition may be active on a given element at a given time.
However, multiple transitions may be scheduled on the same element;
provided they are staggered in time, each transition will run in
sequence. If a newer transition runs on a given element, it implicitly
cancels any older transitions, including any that were scheduled but
not yet run. This allows new transitions, such as those in response to
a new user event, to supersede older transitions even if those older
transitions are staged or have staggered delays. Multi-stage
transitions (transitions that are created during the "end" event of an
earlier transition) are considered the same "age" as the original
transition; internally this is tracked by monotonically-increasing
unique IDs which are inherited when multi-stage transitions are
created.
Also check out the transition source:
https://github.com/mbostock/d3/blob/master/src/core/transition.js