Nothing wrong with using Sleep per se, but this business logic lacks timeout logic.
If it never returns success, your job will run forever, consuming DBUs as well as cloud compute costs.
Using the scala concurrent duration classes, you can create a deadline, then write your code to incorporate that.
while (deadline.hasTimeLeft()) {
// your break logic
// sleep
}