function filter(socket, test = () => true, map = x => x) {
return Generators.observe(notify => {
function messaged(event) {
const message = JSON.parse(event.data);
if (test(message)) {
notify(map(message));
}
}
socket.addEventListener("message", messaged);
return () => socket.removeEventListener("message", messaged);
});
}