# src/util/promise-timeout.js

    // @flow

    export function promiseTimeout<T>(
      promise: Promise<T>,
      timeoutMs: number,
    ): Promise<T | null> {
      let timeoutId: TimeoutID;
      const timeoutPromise = new Promise(resolve => {
        timeoutId = setTimeout(() => resolve(null), timeoutMs);
      });

      return Promise.race([promise, timeoutPromise]).then(result => {
        clearTimeout(timeoutId);
        return result;
      });
    }