function matchMedia(query) {
return Generators.observe(notify => {
const list = window.matchMedia(query);
const onchange = e => { notify(e.matches) };
list.addEventListener('change', onchange);
notify(list.matches);
return () => list.removeEventListener('change', onchange);
});
}