Use promise for upload