olve => {
        this.port.addEventListener('message', function f(ev) {
          this.port.removeEventListener('message', f);
          resolve(ev.data.data);
        }.bind(this));
        this.port.start();
        this.port.postMessage({data, transfer}, transfer);
      });
    },
    teardown() {
      URL.revokeObjectURL(this.blobURL);
    }
  });
</script>
