class['a]
timeout_engine :float -> exn -> 'a engine ->
['a]
engine
timeout_engine d x e
: If the engine e
finishes within d
seconds, the result remains unchanged. If the engine takes longer,
though, it is aborted, and the state transitions to
`Error x