title: Why does an RxPY Observable act as an infinite iterable?
body: <p>I had a bug which accidentally used an <code>Observable</code> as an iterable. For most objects, this is usually easily detected:</p>
  
  <pre><code>&gt;&gt;&gt; tuple(object())
  
  Traceback (most recent call last):
    File "C:\Program Files (x86)\Python27\lib\site-packages\IPython\core\interactiveshell.py", line 3035, in run_code
      exec(code_obj, self.user_global_ns, self.user_ns)
    File "&lt;ipython-input-4-40e3dfc60da8&gt;", line 1, in &lt;module&gt;
      tuple(object())
  TypeError: 'object' object is not iterable
  </code></pre>
  
  <p>However, for an Rx observable, it silently crashes Python:</p>
  
  <hr>
  
  <h2>MWE:</h2>
  
  <pre><code>from rx import Observable
  
  observable = Observable.from_list([1,2,3])
  tuple(observable)  # Python will die silently here
  </code></pre>
  
  <p>There is no traceback and no indication there is any problem. This makes already-hard-to-debug concurrent reactive code even harder to debug -- took me 2 hours to finally track this one down.</p>
  
  <hr>
  
  <p>On closer inspection, iterating over an <code>Observable</code> appears to create new observables, although from where I have no idea given the observable has no <code>__iter__</code> method.</p>
  
  <pre><code>&gt;&gt;&gt; for i, x in enumerate(observable):
  &gt;&gt;&gt;     print x
  &gt;&gt;&gt;     if i &gt; 100:  # To prevent Python from crashing
  &gt;&gt;&gt;         break
  
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111710&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111850&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111990&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111AD0&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111C10&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111D50&gt;
  &lt;rx.anonymousobservable.AnonymousObservable object at 0x03111E90&gt;
  etc...
  </code></pre>
  
  <p>Is this a bug, or a feature? Are <code>Observable</code>s intended to be iterable?</p>