'By providing a next method, the key object supports use as an iterator.
For example, you can now say:
for bytes in key:
write bytes to a file or whatever
All of the HTTP connection stuff is handled for you.'

def next(self):

    self.open_read()
    data = self.resp.read(self.BufferSize)
    if (not data):
        self.close()
        raise StopIteration
    return data
