Emit "close" event once when invoking close()

* [x] Emit "close" event once when invoking `Client::close()`
* [x] 100% test coverage for `Client`