when a client needs a response, you should use calls. But even when a response isn’t needed, calls can sometimes be a better fit.

Should be

when a client needs a response, you should use calls. But even when a response isn’t needed, casts can sometimes be a better fit.

In fact the word calls is correct here. The point of that sentence is that sometimes calls can be useful even if the client doesn't need the response. As explained, the reason is that with calls, client can know the outcome of the operation. Moreover, the client is blocked while waiting for the response, which can serve as a backpressure mechanism, preventing a client to generate too much load.

We won’t be using typespecs in this book, mostly to keep the code as short as possi- ble. But if you plan to build more complex systems, my advice is to seriously consider using typespecs. You can find a detailed reference in the official docs at http://elixir- lang.org/docs/stable/elixir/Kernel.Typespec.html.