self.addEventListener('message', e => { URL.revokeObjectURL(e.data.url); // Registering a new object URL will make absolutely sure that the revocation // has propagated. Without this at least in chrome it is possible for the // below postMessage to arrive at its destination before the revocation has // been fully processed. URL.createObjectURL(new Blob([])); self.postMessage('revoked'); });