Backon is useful for a single function, but it's cumbersome to repeatedly write the same backoff, when, notify, and sleep functions. We should explore a way for users to define their own unified retry function. So they can simplely retry(MyLogic).await.