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.