This still needs lots of tests to be written, and checks for missing browser functionality (specifically around Blob URLs)