UNPKG

@commaai/pandajs

Version:

JavaScript interface for communicating with Panda devices.

60 lines (42 loc) 1.64 kB
'use strict'; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var CancelError = function (_Error) { (0, _inherits3.default)(CancelError, _Error); function CancelError(message) { (0, _classCallCheck3.default)(this, CancelError); var _this = (0, _possibleConstructorReturn3.default)(this, (CancelError.__proto__ || Object.getPrototypeOf(CancelError)).call(this, message)); _this.name = 'CancelError'; return _this; } return CancelError; }(Error); var createDelay = function createDelay(willResolve) { return function (ms, value) { var timeoutId = void 0; var internalReject = void 0; var delayPromise = new Promise(function (resolve, reject) { internalReject = reject; timeoutId = setTimeout(function () { var settle = willResolve ? resolve : reject; settle(value); }, ms); }); delayPromise.cancel = function () { if (timeoutId) { clearTimeout(timeoutId); timeoutId = null; internalReject(new CancelError('Delay canceled')); } }; return delayPromise; }; }; module.exports = createDelay(true); module.exports.reject = createDelay(false); module.exports.CancelError = CancelError;