Joe Duffy has a fascinating blog post on efficient asynchronous API design for systems:
miniblog.
Related Posts
One interesting property of both stdin/stdout based REPLs and RPC based REPLs is that they need to support asynchronous events.
In both these programs, I don't need to wait until the function is done to see the output printed. It's not sufficient to read-eval-wait-print-loop.
A neat demo of the importance of good tracebacks in asynchronous code: https://vorpus.org/blog/beautiful-tracebacks-in-trio-v070/
Code review, especially in open source software, is a lot like postal chess. It's asynchronous and unpredictable.

