Migrate unloader from async to promises