Further refactor tasks: no need for leak prevention since tasks are used
from the persistent podcast manager, use cancel and onCancelled
correctly to save the failed flag