@@ -128,14 +128,14 @@ Object.assign(window.dirac, (function() {
128128 evalInContext ( lookupDefaultContext ( ) , code , silent , callback ) ;
129129 }
130130
131- let debuggerEventsUnsubscriber = null ;
131+ let debuggerEventsUnsubscribers = new Map ( ) ;
132132
133133 /**
134134 * @return {boolean }
135135 */
136136 function subscribeDebuggerEvents ( callback ) {
137- if ( debuggerEventsUnsubscriber ) {
138- return false ;
137+ if ( debuggerEventsUnsubscribers . has ( callback ) ) {
138+ throw new Error ( "subscribeDebuggerEvents called without prior unsubscribeDebuggerEvents for callback " + callback ) ;
139139 }
140140 const globalObjectClearedHandler = ( ...args ) => {
141141 callback ( "GlobalObjectCleared" , ...args ) ;
@@ -151,30 +151,27 @@ Object.assign(window.dirac, (function() {
151151 SDK . targetManager . addModelListener ( SDK . DebuggerModel , SDK . DebuggerModel . Events . DebuggerPaused , debuggerPausedHandler , window . dirac ) ;
152152 SDK . targetManager . addModelListener ( SDK . DebuggerModel , SDK . DebuggerModel . Events . DebuggerResumed , debuggerResumedHandler , window . dirac ) ;
153153
154- /**
155- * @return {boolean }
156- */
157- debuggerEventsUnsubscriber = ( ) => {
154+ debuggerEventsUnsubscribers . set ( callback , ( ) => {
158155 SDK . targetManager . removeModelListener ( SDK . DebuggerModel , SDK . DebuggerModel . Events . GlobalObjectCleared , globalObjectClearedHandler , window . dirac ) ;
159156 SDK . targetManager . removeModelListener ( SDK . DebuggerModel , SDK . DebuggerModel . Events . DebuggerPaused , debuggerPausedHandler , window . dirac ) ;
160157 SDK . targetManager . removeModelListener ( SDK . DebuggerModel , SDK . DebuggerModel . Events . DebuggerResumed , debuggerResumedHandler , window . dirac ) ;
161158 return true ;
162- } ;
159+ } ) ;
163160
164161 return true ;
165162 }
166163
167164 /**
168165 * @return {boolean }
169166 */
170- function unsubscribeDebuggerEvents ( ) {
171- if ( ! debuggerEventsUnsubscriber ) {
172- return false ;
167+ function unsubscribeDebuggerEvents ( callback ) {
168+ if ( ! debuggerEventsUnsubscribers . has ( callback ) ) {
169+ throw new Error ( "unsubscribeDebuggerEvents called without prior subscribeDebuggerEvents for callback " + callback ) ;
173170 }
174171
175- const res = debuggerEventsUnsubscriber ( ) ;
176- debuggerEventsUnsubscriber = null ;
177- return res ;
172+ const unsubscriber = debuggerEventsUnsubscribers . get ( callback ) ;
173+ debuggerEventsUnsubscribers . delete ( callback ) ;
174+ return unsubscriber ( ) ;
178175 }
179176
180177 // --- console ----------------------------------------------------------------------------------------------------------
0 commit comments