docs: def run(self):
          """ Plan:
  
          * We read into a fresh instance of IO obj until marker encountered.
          * When marker is detected, we attach that IO obj to "results" array
            and signal the calling code (through threading.Event flag) that
            results are available
          * repeat until .stop() was called on the thread.
          """
          marker = ['' for l in self._stream_delimiter]  # '' is there on purpose
          tf = self._obj[0](*self._obj[1], **self._obj[2])
          while not self._stop:
              l = os.read(self._r, 1)
              marker.pop(0)
              marker.append(l)
              if marker != self._stream_delimiter:
                  tf.write(unicode(l))
              else:
                  # chopping off the marker first
                  tf.seek(self._stream_roll_back_len, 2)
                  tf.truncate()
                  tf.seek(0)
                  self._data_unoccupied.wait(5)  # seriously, how much time is needed to get your items off the stack?
                  self._data.append(tf)
                  self._data_available.set()
                  tf = self._obj[0](*self._obj[1], **self._obj[2])
          os.close(self._r)
          tf.close()
          del tf