add 'catch' to promise