title: Observable.create(SyncOnSubscribe.createStateless(...)) throws IllegalStateException: "onNext called multiple times!"
body: <p>This example method returns <code>Observable&lt;Integer&gt;</code> of numbers 1 to 9:</p>
  
  <pre><code>public class Provider {
      public static Observable&lt;Integer&gt; test() {
          return Observable.create(SyncOnSubscribe.createStateless(new Action1&lt;Observer&lt;? super Integer&gt;&gt;() {
              @Override
              public void call(Observer&lt;? super Integer&gt; observer) {
                  for (int i = 1; i &lt; 9; i++)
                      // when i == 2, throws IllegalStateException:
                      // "onNext called multiple times!":
                      observer.onNext(i);
              }
          }));
      }
  }
  </code></pre>
  
  <p>This one filters only the 1 to 9 numbers that are multiples of 3:</p>
  
  <pre><code>public class RxJavaUnitTest {
      @Test
      public void rxJavaTest(){
          List&lt;Integer&gt; multiplesOf3 = Provider.test().filter(new Func1&lt;Integer, Boolean&gt;() {
              @Override
              public Boolean call(Integer i) {
                  return i % 3 == 0;
              }
          }).toList().toBlocking().single();
      }
  }
  </code></pre>
  
  <p>But it throws <code>IllegalStateException: “onNext called multiple times!”</code>. How can I provide more values to the <code>observer</code> if I can't call <code>onNext</code> more than once?</p>
  
  <p>Maybe <code>SyncOnSubscribe.createStateless</code> is the wrong method here and to be replaced with something else?</p>