javascript – Name for an async job queue where enqueued jobs cancel pending jobs

Can you help me figure out the name of this object/operation?

I’m writing a form which automatically kicks off a sluggish async job to render a live preview of the results every time the form changes. These automatic jobs should execute sequentially. If the user changes the form before the job is done, the new job should be queued while the running job completes. But if there are other queued up jobs, the other pending jobs should not run. I think I know how I want it to work, and I think I even have a good enough implementation:

class WhatIsThis {
  constructor () {
    this.pending = { 
      promise: Promise.resolve(), 
      tryCancel: false

  queue(asyncAction) {
    this.pending.tryCancel = true;
    const pending = this.pending = {
      tryCancel: false, 
      promise: (() => {
        const doAction = () => pending.tryCancel
          ? { canceled: true }
          : asyncAction();
        return this.pending.promise.then(doAction, doAction);
    return pending.promise;

But, I just don’t know what to call it. It’s not a new concept, it’s not quite a debouncer, and it’s not quite a job/task queue. What is this thing?