type UserId = string type Name = string type User = { id: string, name: string, active: boolean } error UserMissing = { id: string } error StoreUnavailable = { message: string } service Users { find(id: UserId): Option fails StoreUnavailable save(user: User): void fails StoreUnavailable all(): User[] fails StoreUnavailable } export const lookupWithRetry = (id: UserId): Option fails StoreUnavailable uses Users.find => retry(() => Users.find(id), { times: 2 })