@Override public void onNext(T t) { long idx = INDEX.incrementAndGet(this); if (!SubscriptionHelper.set(OTHER, this, SubscriptionHelper.empty())) { return; } Publisher<U> p; try { p = throttler.apply(t); } catch (Throwable e) { ExceptionHelper.throwIfFatal(e); onError(ExceptionHelper.unwrap(e)); return; } if (p == null) { onError(new NullPointerException("The throttler returned a null publisher")); return; } PublisherThrottleTimeoutOther<T, U> os = new PublisherThrottleTimeoutOther<>(this, t, idx); if (SubscriptionHelper.replace(OTHER, this, os)) { p.subscribe(os); } }