@simon That callout about URL.revokeObjectURL() amused me because in scanning the code my PR trained eyes immediately went looking for it after the create Blob. It’s an easy to overlook performance need when working with Blobs in the browser. I’ve found so many huge memory leaks from unpaired createBlob/revokeObjectURL.

One of the reasons I’m hoping the “Disposable” pattern makes into TC-39 Stage 4 soon: github.com/tc39/proposal-expli