added progress callback to the then function call