This is untested but wouldn't this be simpler:
```scala
def delete[I](f: I => Boolean): Process1[I,I] =
  await1[I].flatMap(i => if (f(i)) id else emit(i) fby delete(f))
```