class[['a, 'b]]sync_engine :'a #engine -> 'b #engine ->[('a * 'b)]engine
`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.