The attached model shows how this can be done by just using the triggers on the decision points. Each decision point has two labels: "CurItem" stores which type last entered the intersection and "ActiveItem" stores if there is currently an item waiting at the decision point.
When an item arrives, it is stopped if it's type is not the one following the "CurItem" label.. When an item continues, the label is incremented and a message is send to the connected decision point (with a 2s delay) which causes it to reevaluate whether a waiting item can be send now.
The model also a contains an alternative solution using a process flow. The logic behind it is the same. The advantage the process flow has over the 3 logic is that the token of a waiting item can directly react to another item moving into the intersection ("Wait for Event" listening for other tokens exiting the delay activity) instead of having to send a message. This makes it much easier to scale up, in case an intersection has more than 2 incoming conveyors.
conveyor-stop-resume_1.fsm