2525import reactor .core .CoreSubscriber ;
2626import reactor .core .publisher .Flux ;
2727import reactor .core .publisher .Operators ;
28+ import reactor .core .publisher .UnicastProcessor ;
2829
2930public final class SwitchTransform <T , R > extends Flux <R > {
3031
@@ -39,7 +40,7 @@ public SwitchTransform(
3940
4041 @ Override
4142 public void subscribe (CoreSubscriber <? super R > actual ) {
42- Flux . from ( source ) .subscribe (new SwitchTransformSubscriber <>(actual , transformer ));
43+ source .subscribe (new SwitchTransformSubscriber <>(actual , transformer ));
4344 }
4445
4546 static final class SwitchTransformSubscriber <T , R >
@@ -50,7 +51,7 @@ static final class SwitchTransformSubscriber<T, R>
5051
5152 final CoreSubscriber <? super R > actual ;
5253 final BiFunction <T , Flux <T >, Publisher <? extends R >> transformer ;
53- final UnboundedProcessor <T > processor = new UnboundedProcessor <> ();
54+ final UnicastProcessor <T > processor = UnicastProcessor . create ();
5455 Subscription s ;
5556 volatile int once ;
5657
@@ -76,10 +77,10 @@ public void onNext(T t) {
7677 Publisher <? extends R > result =
7778 Objects .requireNonNull (
7879 transformer .apply (t , processor ), "The transformer returned a null value" );
79- Flux . from ( result ) .subscribe (actual );
80+ result .subscribe (actual );
8081 } catch (Throwable e ) {
8182 onError (Operators .onOperatorError (s , e , t , actual .currentContext ()));
82- ReferenceCountUtil .release (t );
83+ ReferenceCountUtil .safeRelease (t );
8384 return ;
8485 }
8586 }
0 commit comments