I have the following scenario:
savePicture(newPicture, fileData){
    return compressionUtil.makePictureAndThumbnail(newPicture).then((data) => {
        let writeBig = fsUtil.writeFileToDisk(pictureFileName, data[0])
        let writeSmall = fsUtil.writeFileToDisk(thumbnailFileName, data[1])
        return Promise.all([writeBig, writeSmall]).then(() => {
            let picToSave = {
                uploaderUsername: fileData.username,
                directory: fileDirectory,
                fileName: fileName,
                tags: fileData.tags,
                description: fileData.description,
                droneTaken: fileData.droneTaken,
                isGenuine: isGenuine,
                metadata: metadata
            }
            return Picture.create(picToSave)
        })
    })
}
What I am looking to do is handle possible promise rejections of compressionUtil.makePictureAndThumbnail() and Promise.all([writeBig, writeSmall]) like so
savePicture(newPicture, fileData){
    return compressionUtil.makePictureAndThumbnail(newPicture).then((data) => {
        let writeBig = fsUtil.writeFileToDisk(pictureFileName, data[0])
        let writeSmall = fsUtil.writeFileToDisk(thumbnailFileName, data[1])
        return Promise.all([writeBig, writeSmall]).then(() => {
            let picToSave = {
                uploaderUsername: fileData.username,
                directory: fileDirectory,
                fileName: fileName,
                tags: fileData.tags,
                description: fileData.description,
                droneTaken: fileData.droneTaken,
                isGenuine: isGenuine,
                metadata: metadata
            }
            return Picture.create(picToSave)
        }).catch((err)=>{/*Handle promise.all error here*/})
    }).catch((err)=>{/*Handle makePictureAndThumbnail error here*/})
}
but at the same time make savePicture() return only Picture.create() 's promise .then() and .catch().
What I have thought about is wrapping it all in a giant new Promise((resolve,reject)=>{}) but probably that's a terrible practice.
Input on that is appreciated. Thanks.
 
     
    