44 ArrayPrototypeAt,
55 ArrayPrototypeIndexOf,
66 ArrayPrototypePush,
7+ ArrayPrototypePushApply,
8+ ArrayPrototypeSlice,
79 ArrayPrototypeSplice,
810 ObjectDefineProperty,
911 ObjectGetPrototypeOf,
@@ -97,6 +99,7 @@ function wrapStoreRun(store, data, next, transform = defaultTransform) {
9799class ActiveChannel {
98100 subscribe ( subscription ) {
99101 validateFunction ( subscription , 'subscription' ) ;
102+ this . _subscribers = ArrayPrototypeSlice ( this . _subscribers ) ;
100103 ArrayPrototypePush ( this . _subscribers , subscription ) ;
101104 channels . incRef ( this . name ) ;
102105 }
@@ -105,7 +108,10 @@ class ActiveChannel {
105108 const index = ArrayPrototypeIndexOf ( this . _subscribers , subscription ) ;
106109 if ( index === - 1 ) return false ;
107110
108- ArrayPrototypeSplice ( this . _subscribers , index , 1 ) ;
111+ const before = ArrayPrototypeSlice ( this . _subscribers , 0 , index ) ;
112+ const after = ArrayPrototypeSlice ( this . _subscribers , index + 1 ) ;
113+ this . _subscribers = before ;
114+ ArrayPrototypePushApply ( this . _subscribers , after ) ;
109115
110116 channels . decRef ( this . name ) ;
111117 maybeMarkInactive ( this ) ;
@@ -137,9 +143,10 @@ class ActiveChannel {
137143 }
138144
139145 publish ( data ) {
140- for ( let i = 0 ; i < ( this . _subscribers ?. length || 0 ) ; i ++ ) {
146+ const subscribers = this . _subscribers ;
147+ for ( let i = 0 ; i < ( subscribers ?. length || 0 ) ; i ++ ) {
141148 try {
142- const onMessage = this . _subscribers [ i ] ;
149+ const onMessage = subscribers [ i ] ;
143150 onMessage ( data , this . name ) ;
144151 } catch ( err ) {
145152 process . nextTick ( ( ) => {
0 commit comments