Closes the client and cleans up any resources associated with it.
Once close is called, no other methods should be called.
@override void close() { isClosed = true; }