Slightly more interesting promise, with error handling