publiclab/plotsbot

View on GitHub
src/behaviors/unresponsive.js

Summary

Maintainability
A
0 mins
Test Coverage
const Behavior = require('../models/behavior');

module.exports = ({ responseTime, offsetTime }) => {
  let currentTimeout;

  const unresponsiveAction = () => {
    if (currentTimeout) {
      clearTimeout(currentTimeout);
    }
    return new Promise((resolve, reject) => {
      currentTimeout = setTimeout(() => {
        currentTimeout = undefined;
        resolve('');
      }, responseTime);

      setTimeout(() => {
        reject();
      }, responseTime + offsetTime);
    });
  };

  return new Behavior('message', unresponsiveAction);
};