Netflix/RxJava — pull request #453 by zsxwing (2013-10-25 11:32:25+00:00)
Title: Fixed issue #417

```java
public static void main(String[] args) {
System.out.println("started");
System.out.println(Observable.from(1).observeOn(Schedulers.threadPoolForComputation())
.map(f).toBlockingObservable().single());
System.out.println("done");
}
```

This issue in #417 is because current `map` implementation violates the design guild:
> 6.4. Protect calls to user code from within an operator

Now current `map` does not handle the error from the `func` param which may be user codes. When the thread pool scheduler is involved, the error from `func` will throw to the outside and be handled by `java.util.concurrent.FutureTask`. The error will be dropped so the observer will not see it.

This PR used `SafeObserver` to protect `map` from user codes.