let once key cc = try Hashtbl.find compiled key with Not_found -> let t = Task.nop >>= cc >>? revert_on_error key in Hashtbl.add compiled key t ; t