message: Wrap handleRoomUpdate in a lock
  Dev note: this is removed in a later commit
diff: @@ -33,6 +33,7 @@ import { FILTER_CHANGED, FilterPriority, IFilterCondition } from "../filters/IFi
  import { EffectiveMembership, getEffectiveMembership, splitRoomsByMembership } from "../membership";
  import { OrderingAlgorithm } from "./list-ordering/OrderingAlgorithm";
  import { getListAlgorithmInstance } from "./list-ordering";
  +import AwaitLock from "await-lock";
  // TODO: Add locking support to avoid concurrent writes? https://github.com/vector-im/riot-web/issues/14235
  @@ -66,6 +67,7 @@ export class Algorithm extends EventEmitter {
  } = {};
  private allowedByFilter: Map<IFilterCondition, Room[]> = new Map<IFilterCondition, Room[]>();
  private allowedRoomsByFilters: Set<Room> = new Set<Room>();
  + private readonly lock = new AwaitLock();
  public constructor() {
  super();
  @@ -607,6 +609,9 @@ export class Algorithm extends EventEmitter {
  * processing.
  */
  public async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise<boolean> {
  + try {
  + await this.lock.acquireAsync();
  +
  if (!this.algorithms) throw new Error("Not ready: no algorithms to determine tags from");
  if (cause === RoomUpdateCause.NewRoom) {
  @@ -669,5 +674,8 @@ export class Algorithm extends EventEmitter {
  }
  return true;
  + } finally {
  + this.lock.release();
  + }
  }
  }
  