NotificationLite.ErrorSentinel.toString

It should delegate the toString to the Exception, not reach into the message. Some Exceptions don't have a message so this could print "null" and not show the exception type.
Unsubscribe eagerly and drop queued onNext to emit onError

The queue will be drained to find and emit the onError.
Assert onError cuts ahead of onNext

... and doesn't allow intermittent onNext via a race of draining the queue and emitting (the draining thread must be where the skipping happens, not the producer thread).
Merge pull request #1683 from benjchristensen/observeOn-error

ObserveOn Error Handling