Code changes to better support async
Separate M3U reading into library, tweaked control flow