title: RxAndroid crashes the app although doOnError is implemented
body: <p>I have the following code. It's basically an attempt to send all data from a specific SQLite table to DynamoDB:</p>
  
  <pre><code>Observable.create(new Observable.OnSubscribe&lt;Area&gt;() {
      @Override
      public void call(Subscriber&lt;? super Area&gt; subscriber) {
          try {
              for (Area item : areaDao.listAll()) {
                  subscriber.onNext(item);
              }
              subscriber.onCompleted();
          } catch (Exception e) {
              subscriber.onError(e);
          }
      }
  }).flatMap(new Func1&lt;Area, Observable&lt;Area&gt;&gt;() {
      @Override
      public Observable&lt;Area&gt; call(Area area) {
          dynamoDBMapper.save(area);
          return Observable.just(area);
      }
  }).observeOn(
          AndroidSchedulers.mainThread()
  ).doOnError(new Action1&lt;Throwable&gt;() {
      @Override
      public void call(Throwable throwable) {
          Log.w("AreaHandler", "Could not upload area", throwable);
      }
  }).doOnCompleted(new Action0() {
      @Override
      public void call() {
          Toast.makeText(ctx, R.string.toast_upload_successful, Toast.LENGTH_SHORT).show();
      }
  }).subscribeOn(
          Schedulers.io()
  ).subscribe(new Action1&lt;Area&gt;() {
      @Override
      public void call(Area area) {
          areaDao.delete(area.getId());
      }
  });
  </code></pre>
  
  <p>I'm trying to run it on an emulator with disabled Internet connectivity, and what happens is that the Dynamo client does a couple of (failed) retries, then an exception is thrown and it crashes the app. From what I read in the docs, the exception should be swallowed by doOnError instead of being let out to the wild and killing the process.</p>
  
  <p>What am I missing?</p>