https://blog.jupyter.org/posts/2018/ipython-7-0-async-repl/