1234567891011121314151617181920212223242526open!Core_kernelopen!Deferred.Let_syntaxopen!ImportincludeCore_kernel.InvariantmoduleAsync=structincludeAsync_invariant_intf.Asyncletinvariantheretsexp_of_tf=match%mapMonitor.try_withf~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~extract_exn:true(fun()->f(Field.getfieldt))with|Ok()->()|Errorexn->raise_s[%message"problem with field"~field:(Field.namefield:string)(exn:exn)];;end