moon2 = new Promise(async (resolve, reject) => {
const response = await fetch(url);
const blob = await response.blob();
const src = URL.createObjectURL(blob);
const image = new Image();
invalidation.then(() => URL.revokeObjectURL(src));
image.crossOrigin = "anonymous";
image.src = src;
image.onload = () => resolve(image);
image.onerror = reject;
})