# Class Uq_engines.sync_engine

    class [['a, 'b]] sync_engine : 'a #engine -> 'b #engine -> [('a * 'b)] engine

This engine runs two engines in parallel, and waits until both are ``Done` (synchronization). The product of the two ``Done` arguments is taken as the combined result.

If one of the engines goes to the states ``Aborted` or ``Error`, the combined engine will follow this transition. The other, non-aborted and non-errorneous engine is aborted in this case. ``Error` has higher precedence than ``Aborted`.

If the combined engine is aborted, this request is forwarded to both member engines.