'Like get_updates except allows specifying from when we should
stream updates
Returns:
(list(ROW_TYPE), int): list of updates plus the token used as an
upper bound of the updates (i.e. the "current token")'

@defer.inlineCallbacks
def get_updates_since(self, from_token):

    if (from_token in ('NOW', 'now')):
        defer.returnValue(([], self.upto_token))
    current_token = self.upto_token
    from_token = int(from_token)
    if (from_token == current_token):
        defer.returnValue(([], current_token))
    if self._LIMITED:
        rows = (yield self.update_function(from_token, current_token, limit=(MAX_EVENTS_BEHIND + 1)))
        if (len(rows) >= MAX_EVENTS_BEHIND):
            raise Exception(('stream    %s    has    fallen    behined' % self.NAME))
    else:
        rows = (yield self.update_function(from_token, current_token))
    updates = [(row[0], self.ROW_TYPE(*row[1:])) for row in rows]
    defer.returnValue((updates, current_token))
