https://medium.com/before-semicolon/signals-and-effects-using-vanilla-javascript-web-apis-2cfb4845e01a