code: def _read(self, cmd, buffer, location, reader):
          
          try:
              op = buffer[location]
              cmd.append(op)
              return op
          except IndexError:
              op = yield from reader.read(1)
              buffer.extend(op)
              cmd.append(buffer[location])
              return op
docs: Reads next op from the buffer or reader