sync dom/xhr/fetch