определений от https://github.com/ReactiveX/RxJava/wiki/Blocking-Observable-Operators
first() — block until the Observable emits an item, then return the first item
emitted by the Observable
single( ) — if the Observable completes after emitting a single item, return
that item, otherwise throw an exception
звучит так, как first()
немедленно возвращается после испускания любого предмета, а single()
ожидает завершения наблюдения, чтобы завершить.