Initial commit

Porting all the code from Qiita and extending the tests.
Can test explicitly with `self._connection.closed`