suitest-js-api
Version:
Suitest is a test automation and device manipulation tool for living room devices and web browsers.
33 lines (24 loc) • 769 B
JavaScript
const {stackTraceWrapper} = require('./stackTraceParser');
const {captureException} = require('../utils/sentry/Raven');
let currentPromise = Promise.resolve();
/**
* Callback for `chainPromise` function
*
* @callback chainPromiseCallback
* @param {*} args
* @return {Promise<*>}
*/
/**
* Only keep one Promise in chain, always refer to it when next promise has to be chained
* @param {chainPromiseCallback} callback
* @returns {function}
*/
const chainPromise = callback => (...args) => {
const wrappedCallback = stackTraceWrapper(() => callback(...args));
currentPromise = currentPromise.then(wrappedCallback, async(err) => {
await captureException(err);
return wrappedCallback();
});
return currentPromise;
};
module.exports = chainPromise;