                     "SUCCESS_PARTIAL": =>
                         @_handleRow()
                     ,"SUCCESS_SEQUENCE": =>
-                        @_handleRow()
+                        if response.response.length == 0
+                            @_responses.shift()
+                        else
+                            @_handleRow()
                     ,"COMPILE_ERROR": =>
+                        @_responses.shift()
                         cb = @_getCallback()
                         cb mkErr(err.RqlCompileError, response, @_root)
                     ,"CLIENT_ERROR": =>
+                        @_responses.shift()
                         cb = @_getCallback()
                         cb mkErr(err.RqlClientError, response, @_root)
                     ,"RUNTIME_ERROR": =>
+                        @_responses.shift()
                         cb = @_getCallback()
                         cb mkErr(err.RqlRuntimeError, response, @_root)
                     },
                         =>
+                            @_responses.shift()
                             cb = @_getCallback()
                             cb new err.RqlDriverError "Unknown response type for cursor"
                 )


    _handleRow: ->
        response = @_responses[0]

        row = deconstructDatum(response.response[@_responseIndex], @_opts)
        cb = @_getCallback()



    ## Implement IterableResult

    hasNext: ar () -> @_responses[0]? && @_responses[0].response.length > 0

    next: ar (cb) ->
        nextCbCheck(cb)
