compute pressure: Add web test for multiple calls to PressureObserver.observe()

The buggy behavior described in issue 333957909 has been fixed by
https://crrev.com/c/5384658 but we want to make sure this does not
happen again.

Bug: 333957909
Change-Id: Ia1ac67b534eeca3bb3cc1c7832e8df07d3e7847e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5447142
Auto-Submit: Raphael Kubo Da Costa <raphael.kubo.da.costa@intel.com>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Reilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1286881}
diff --git a/compute-pressure/observe_return_type.https.any.js b/compute-pressure/observe_return_type.https.any.js
new file mode 100644
index 0000000..b24878a
--- /dev/null
+++ b/compute-pressure/observe_return_type.https.any.js
@@ -0,0 +1,18 @@
+// META: script=/resources/test-only-api.js
+// META: script=resources/pressure-helpers.js
+// META: global=window,dedicatedworker,sharedworker
+
+'use strict';
+
+// Regression test for https://issues.chromium.org/issues/333957909
+// Make sure that observe() always returns a Promise.
+pressure_test(async (t, mockPressureService) => {
+  const observer = new PressureObserver(() => {});
+  t.add_cleanup(() => observer.disconnect());
+
+  for (let i = 0; i < 2; i++) {
+    const promise = observer.observe('cpu');
+    assert_class_string(promise, 'Promise');
+    await promise;
+  }
+}, 'PressureObserver.observe() is idempotent');