diff --git a/prelude/tactics.v b/prelude/tactics.v
index 5ca37ea3770b482ade80923ddbdf59349d9c6182..9843baa661f8841edec521c0100de61a656bc47f 100644
--- a/prelude/tactics.v
+++ b/prelude/tactics.v
@@ -303,7 +303,8 @@ Tactic Notation "feed" "destruct" constr(H) "as" simple_intropattern(IP) :=
 It will search for the first subterm of the goal matching [pat], and then call [tac]
 with that subterm. *)
 Ltac find_pat pat tac :=
-  match goal with |- context [?x] => unify pat x; tac x || fail 2
+  match goal with |- context [?x] =>
+                  unify pat x; tryif tac x then idtac else fail 2
 end.
 
 (** Coq's [firstorder] tactic fails or loops on rather small goals already. In