async map download with proper error handling

closes #3275