added done to re-throw when there are problems with the promise chain