12345678910111213141516171819202122232425262728293031323334353637383940open!Coreopen!Deferred.Let_syntaxopen!ImportincludeCore.InvariantmoduleAsync=structincludeAsync_invariant_intf.Asyncletinvariantheretsexp_of_tf=match%mapMonitor.try_with~run:`Schedule~rest:`Logf~extract_exn:truewith|Ok()->()|Errorexn->raise_s[%message"invariant failed"~_:(here:Source_code_position.t)(exn:exn)~_:(t:t)];;letcheck_fieldtfwait_for_previousfield=let%bind()=wait_for_previousinmatch%mapMonitor.try_with~run:`Schedule~rest:`Log~extract_exn:true(fun()->f(Field.getfieldt))with|Ok()->()|Errorexn->raise_s[%message"problem with field"~field:(Field.namefield:string)(exn:exn)];;end