I like this tail recursive solution but I am not sure about the efficiency of creating a new PrioritySelector for every fallback. I thought about a few alternatives, let discuss and compare them offline.