message: ref: Rewrite RequestBuffer using Array instead of Set for IE10/11
diff: /** A simple queue that holds promises. */
  export class RequestBuffer<T> {
  /** Internal set of queued Promises */
  - private readonly buffer: Set<Promise<T>> = new Set();
  + private readonly buffer: Array<Promise<T>> = [];
  /**
  * Add a promise to the queue.
  @@ -10,16 +10,29 @@ export class RequestBuffer<T> {
  * @returns The original promise.
  */
  public async add(task: Promise<T>): Promise<T> {
  - this.buffer.add(task);
  - task.then(() => this.buffer.delete(task)).catch(() => this.buffer.delete(task));
  + if (this.buffer.indexOf(task) === -1) {
  + this.buffer.push(task);
  + }
  + task.then(async () => this.remove(task)).catch(async () => this.remove(task));
  return task;
  }
  + /**
  + * Remove a promise to the queue.
  + *
  + * @param task Can be any Promise<T>
  + * @returns Removed promise.
  + */
  + public async remove(task: Promise<T>): Promise<T> {
  + const removedTask = this.buffer.splice(this.buffer.indexOf(task), 1)[0];
  + return removedTask;
  + }
  +
  /**
  * This function returns the number of unresolved promises in the queue.
  */
  public length(): number {
  - return this.buffer.size;
  + return this.buffer.length;
  }
  /**
  @@ -35,7 +48,7 @@ export class RequestBuffer<T> {
  resolve(false);
  }
  }, timeout);
  - Promise.all(this.buffer.values())
  + Promise.all(this.buffer)
  .then(() => {
  clearTimeout(capturedSetTimeout);
  resolve(true);
  