Why is it necessary to have this extra `Task` wrapper? Can you subclass Future or just attach `priority_fn` to it as an attribute?