fish: improve insist function

- Exponential backoff
- Don't spawn new runs all the time, but stay inside the same function.
  The previous implementation caused fish to be suspicious of infinite
  loops.
fish: update script style

- prefer using type over which
- prefer using test wrapper instead of `>/dev/null`