/**
* Repeats this effect until its value satisfies the specified predicate or
* until the first failure.
*
* @tsplus static effect/core/io/Effect.Aspects repeatUntil
* @tsplus pipeable effect/core/io/Effect repeatUntil
*/
export function repeatUntil(p: Predicate) {
return (self: Effect): Effect =>
self.repeatUntilEffect((a) => Effect.sync(p(a)))
}