code: function cancel() {
      timeouts.forEach(function (timeout) {
        clearTimeout(timeout);
      });
      Object.keys(callbacks).forEach(function (key) {
        callbacks[key]('cancel');
        delete callbacks[key];
      });
      timeouts = [];
    }
docs: TODO should issue callback