Make the client error-out cleanly when the server is not installed
The sheer volume of errors generated by the server not being ready to accept messages from the client makes it very easy to be confused what the problem really is. See #28.
When the client first tries to make the connection to the server it should cleanly "notice" that the server isn't there (i.e., that Grabbit is not installed on the server, as opposed to the server not being up or a network problem or the like). It should then give a clear error as to the cause ("Grabbit does not seem to be installed on xxxxxxxx") and stop.
Should this (at least the verification) be done synchronously with the PUT done to the client so that the caller can receive the error right away? Or should it be async with when the client actually tries to communicate with the server?
For # 1 (synchronously with the PUT), we could have something like a Server Ping API that will respond with "All OK" or something like that.
One the other hand, for # 2 (asynchronous), we can just leverage error messaging on HttpClient library on Client and look out for appropriate Status Codes. But this way, we would be checking it for every path in the JSON config file.