code: public final <R> Plan0<R> then(Func1<T, R> selector) {
          return OperatorJoinPatterns.then(o, selector);
      }
docs: Matches when the Observable has an available item and projects the item by invoking the selector
  function.
  <p>
  <img width="640" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/and_then_when.png" alt="">
  
  @param selector
  selector that will be invoked for items emitted by the source Observable
  @return a {@link Plan0} that produces the projected results, to be fed (with other Plans) to the {@link #when} Observer
  @throws NullPointerException
  if {@code selector} is null
  @see <a href="https://github.com/ReactiveX/RxJava/wiki/Combining-Observables#wiki-and-then-and-when">RxJava Wiki: then()</a>
  @see <a href="http://msdn.microsoft.com/en-us/library/hh211662.aspx">MSDN: Observable.Then</a>