I'm not sure under what circumstances an item merge occurs, but that would be problematic, as it would be waiting on someone else's job and tying a node up needlessly.
Scraping though the code on GitHub last night I saw there is a check to see if scheduling should happen, one of the simple checks being a like for like and returns with
ScheduleResult.Refusedwhich is a shame that's not propagated up, however, it does seem that you can assume when the future is done and getJob yields null, it never started, I guess with a mixture of cancel checks and what not could determine the actual cause.
I'd have to run some tests to see what means what.