@@ -31,7 +31,7 @@ let proxy: ISQLite;
3131function closeContextLock ( dbName : string , id : ContextLockID ) {
3232 delete LockCallbacks [ id ] ;
3333
34- // This is configured by the setupConcurrency function
34+ // This is configured by the setupOpen function
3535 proxy . releaseLock ( dbName , id ) ;
3636}
3737
@@ -105,43 +105,35 @@ export function setupOpen(QuickSQLite: ISQLite) {
105105 ) : Promise < T > => {
106106 const id = uuid . v4 ( ) ; // TODO maybe do this in C++
107107 // Wrap the callback in a promise that will resolve to the callback result
108- let resolve : ( value : T ) => void ;
109- let reject : ( ex : any ) => void ;
110-
111- const promise = new Promise < T > ( ( res , rej ) => {
112- resolve = res ;
113- reject = rej ;
114- } ) ;
115-
116- // Add callback to the queue for timing
117- const record = ( LockCallbacks [ id ] = {
118- callback : async ( context : LockContext ) => {
119- try {
120- const res = await callback ( context ) ;
121- resolve ( res ) ;
122- } catch ( ex ) {
123- reject ( ex ) ;
108+ return new Promise < T > ( ( resolve , reject ) => {
109+ // Add callback to the queue for timing
110+ const record = ( LockCallbacks [ id ] = {
111+ callback : async ( context : LockContext ) => {
112+ try {
113+ const res = await callback ( context ) ;
114+ resolve ( res ) ;
115+ } catch ( ex ) {
116+ reject ( ex ) ;
117+ }
124118 }
119+ } as LockCallbackRecord ) ;
120+
121+ try {
122+ QuickSQLite . requestLock ( dbName , id , type ) ;
123+ const timeout = options ?. timeoutMs ;
124+ if ( timeout ) {
125+ record . timeout = setTimeout ( ( ) => {
126+ // The callback won't be executed
127+ delete LockCallbacks [ id ] ;
128+ reject ( new Error ( `Lock request timed out after ${ timeout } ms` ) ) ;
129+ } , timeout ) ;
130+ }
131+ } catch ( ex ) {
132+ // Remove callback from the queue
133+ delete LockCallbacks [ id ] ;
134+ reject ( ex ) ;
125135 }
126- } as LockCallbackRecord ) ;
127-
128- try {
129- QuickSQLite . requestLock ( dbName , id , type ) ;
130- const timeout = options ?. timeoutMs ;
131- if ( timeout ) {
132- record . timeout = setTimeout ( ( ) => {
133- // The callback won't be executed
134- delete LockCallbacks [ id ] ;
135- reject ( new Error ( `Lock request timed out after ${ timeout } ms` ) ) ;
136- } , timeout ) ;
137- }
138- } catch ( ex ) {
139- // Remove callback from the queue
140- delete LockCallbacks [ id ] ;
141- reject ( ex ) ;
142- }
143-
144- return promise ;
136+ } ) ;
145137 } ;
146138
147139 const readLock = < T > ( callback : ( context : LockContext ) => Promise < T > , options ?: LockOptions ) : Promise < T > =>
0 commit comments