async preload returns file path