self.onmessage = function(e) {
// Worker does two things:
// 1. call createImageBitmap() from the ImageBitmap that is transferred
// from the main thread, which verifies that createImageBitmap(ImageBitmap)
// works on the worker thread.
// 2. send the created ImageBitmap back to the main thread, the
// main thread exam the property of this ImageBitmap to make sure
// the transfer between main and worker thread didn't lose data
createImageBitmap(e.data.data).then(imageBitmap => {
postMessage({data: imageBitmap}, [imageBitmap]);
});
};