Run sync/async functions and return a typed Result instead of throwing.
easy-to-use utilities to add retry logic to async functions