diff --git a/aiogremlin/__init__.py b/aiogremlin/__init__.py
index 123064e230d20d2bac48a14b064cac0ef6d0c1cc..890bba0dccd26af8920cddebb27459209884b0a2 100644
--- a/aiogremlin/__init__.py
+++ b/aiogremlin/__init__.py
@@ -3,4 +3,4 @@ from .connection import (WebsocketPool, AiohttpFactory, BaseFactory,
     BaseConnection)
 from .client import GremlinClient, create_client
 from .exceptions import RequestError, GremlinServerError, SocketClientError
-__version__ = "0.0.3"
+__version__ = "0.0.3dev"
diff --git a/aiogremlin/client.py b/aiogremlin/client.py
index fa5f03b072e7b524ca6fe2d13fce161dbd1f9530..1ff129a0d0b120cdf63085f599dda7dedd46f4eb 100644
--- a/aiogremlin/client.py
+++ b/aiogremlin/client.py
@@ -155,18 +155,20 @@ class GremlinResponseStream:
 
     @asyncio.coroutine
     def _read(self):
+        # This will find the eof set at 200 response
+        if self._queue.at_eof():
+            self._conn.feed_pool()
+            return
         message = asyncio.async(self._queue.read(), loop=self._loop)
         done, pending = yield from asyncio.wait(
             [message, asyncio.async(self._conn._receive(), loop=self._loop)],
             loop=self._loop, return_when=asyncio.FIRST_COMPLETED)
         if message in done:
+            # Temporary
             try:
                 return message.result()
-            except aiohttp.streams.EofStream:
+            except aiohttp.EofStream:
                 self._conn.feed_pool()
-            except Exception:
-                self._conn.feed_pool()
-                raise
         else:
             message.cancel()
 
diff --git a/aiogremlin/connection.py b/aiogremlin/connection.py
index aa62588a06dcea98dd84db9d8ad763aaef67ebd1..7652d14ac72248d7044ba8c55181931afc2362a9 100644
--- a/aiogremlin/connection.py
+++ b/aiogremlin/connection.py
@@ -230,9 +230,17 @@ class AiohttpConnection(BaseConnection):
             yield from self.release()
             raise
         if message.tp == aiohttp.MsgType.binary:
-            self.parser.feed_data(message.data.decode())
+            try:
+                self.parser.feed_data(message.data.decode())
+            except Exception:
+                self.release()
+                raise
         elif message.tp == aiohttp.MsgType.text:
-            self.parser.feed_data(message.data.strip())
+            try:
+                self.parser.feed_data(message.data.strip())
+            except Exception:
+                self.release()
+                raise
         else:
             try:
                 if message.tp == aiohttp.MsgType.close:
diff --git a/aiogremlin/protocol.py b/aiogremlin/protocol.py
index 621a37f0b5d6968a2704efb40c9fa8bd198df9e7..6f40cba272eeb1b13103571167f66c4e1852a4e3 100644
--- a/aiogremlin/protocol.py
+++ b/aiogremlin/protocol.py
@@ -23,15 +23,13 @@ def gremlin_response_parser(out, buf):
         if message.status_code == 200:
             out.feed_data(message)
         elif message.status_code == 299:
+            out.feed_data(message)
             out.feed_eof()
         else:
-            try:
-                if message.status_code < 500:
-                    raise RequestError(message.status_code, message.message)
-                else:
-                    raise GremlinServerError(message.status_code, message.message)
-            finally:
-                yield from connection.release()
+            if message.status_code < 500:
+                raise RequestError(message.status_code, message.message)
+            else:
+                raise GremlinServerError(message.status_code, message.message)
 
 
 class GremlinWriter:
diff --git a/profile.py b/profiler.py
similarity index 100%
rename from profile.py
rename to profiler.py