Skip to content

Commit

Permalink
Have promiseCallback make callbacks and promises behave the same
Browse files Browse the repository at this point in the history
  • Loading branch information
zwade committed Feb 2, 2022
1 parent e8d9b67 commit 3cfbc7f
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions lib/utilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,19 @@ const errorFunc = (resolve, reject) => isFunc(reject) ? reject : resolve;

/**
* Return a callback function for promise resole/reject args.
* Ensures that callback is called only once.
* @returns {Function}
*/
const promiseCallback = (resolve, reject) => {
return err => err ? errorFunc(resolve, reject)(err) : resolve();
let hasFired = false;
return (err) => {
if (hasFired) {
return;
}

hasFired = true;
return err ? errorFunc(resolve, reject)(err) : resolve();
};
};

/**
Expand Down Expand Up @@ -177,8 +186,9 @@ const saveBufferToFile = (buffer, filePath, callback) => {
};
// Setup file system writable stream.
let fstream = fs.createWriteStream(filePath);
fstream.on('error', err => callback(err));
fstream.on('close', () => callback());
console.log("Calling saveBuffer");
fstream.on('error', err => (console.log("err cb"), callback(err)));
fstream.on('close', () => (console.log("close cb"), callback()));
// Copy file via piping streams.
readStream.pipe(fstream);
};
Expand Down

0 comments on commit 3cfbc7f

Please sign in to comment.