await the latest observable value

I’m completely new to rxjs and trying to accomplish one task – essentially I need a Promise-like API with the following differences:

  1. Unlike the standard Promise my API should be able to resolve multiple times.
  2. When calling await/then the last resolved value should be used.
  3. If my API was never resolved the await/then should hang, just like the standard Promise.
  4. Additionally I need a reset method which will be resetting my API object so the following await/then calls will hang like in the point 3.

How can I implement the needed behaviour? I think rxjs Observable and lastValueFrom is what I need, but I just can’t figure out how to use it.

Pseudocode example usage:

const myAuthObservable = new MyObservableApi<Auth>((resolve) =>
  subscribe(
    (s) => s.auth,
    (auth) => {
      if (auth) {
        resolve(auth); // this can be called multiple times
      }
    }
  )
);

emitter.on("start", async () => {
  // always the last auth will be returned
  // or the api will hang until the first auth is emitted
  const auth = await myAuthObservable;
  myAuthObservable.reset();
});