Break out async forecast fetching code and fix what breaks.