that said, I'm not sure that the "cleanup" function should use a Promise; the "canvas reset" is not asynchronous itself, so I think it's mixing 2 things in one.