'Read from recv and return a HTTPResponse object if possible.
Either
1 - The client has succesfully closed the connection: Return \'\'
2 - The server has already closed the connection: Return the response
if possible.'

def _getresponse(self):

    self._conn.sock.setblocking(True)
    response = self._bytes
    while True:
        try:
            _bytes = self._conn.sock.recv(1)
        except http_client.socket.error:
            return six.b('')
        if (_bytes == six.b('')):
            break
        else:
            response += _bytes
    self._conn.sock.setblocking(False)
    if (response != six.b('')):
        try:
            response = http_client.HTTPResponse(_FakeSocket(response))
            response.begin()
        except:
            response = six.b('')
    return response
