Question: util.promisify converts an async function that uses the error-first callback style to a Promise. However it doesn't seem to work with AWS' S3.upload (scroll down to .upload) which is an async function that uses the error-first callback format.
Original format:
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
s3.upload(params, function(err, result) {
if (err) {
throw new Error(err);
} else {
console.log(result);
}
});
Promisify format:
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
const s3Upload = util.promisify(s3.upload);
s3Upload(params)
.then( (result) => {
console.log(result);
})
.catch( (err) => {
throw new Error(err);
});
However used in this manner s3.upload
throws an error,
TypeError: service.getSignatureVersion is not a function
If util.promisify
doesn't necessarily work for every async function that uses a callback is there a way to determine beforehand if a function will work with it? Or alternately does it take trial and error to determine if util.promisify
will work?