@@ -248,36 +248,52 @@ final class DatabaseClient implements WebSqlite {
248
248
}
249
249
_startedWorkers = true ;
250
250
251
- if (globalContext.has ('Worker' )) {
252
- final dedicated = Worker (
251
+ await _startDedicated ();
252
+ await _startShared ();
253
+ });
254
+ }
255
+
256
+ Future <void > _startDedicated () async {
257
+ if (globalContext.has ('Worker' )) {
258
+ final Worker dedicated;
259
+ try {
260
+ dedicated = Worker (
253
261
workerUri.toString ().toJS,
254
262
WorkerOptions (name: 'sqlite3_worker' ),
255
263
);
256
-
257
- final (endpoint, channel) = await createChannel ();
258
- ConnectRequest (endpoint: endpoint, requestId: 0 )
259
- .sendToWorker (dedicated);
260
-
261
- _connectionToDedicated =
262
- WorkerConnection (channel.injectErrorsFrom (dedicated));
263
- } else {
264
+ } on Object {
264
265
_missingFeatures.add (MissingBrowserFeature .dedicatedWorkers);
266
+ return ;
265
267
}
266
268
267
- if (globalContext.has ('SharedWorker' )) {
268
- final shared = SharedWorker (workerUri.toString ().toJS);
269
- shared.port.start ();
269
+ final (endpoint, channel) = await createChannel ();
270
+ ConnectRequest (endpoint: endpoint, requestId: 0 ).sendToWorker (dedicated);
270
271
271
- final (endpoint, channel) = await createChannel ();
272
- ConnectRequest (endpoint: endpoint, requestId: 0 )
273
- .sendToPort (shared.port);
272
+ _connectionToDedicated =
273
+ WorkerConnection (channel.injectErrorsFrom (dedicated));
274
+ } else {
275
+ _missingFeatures.add (MissingBrowserFeature .dedicatedWorkers);
276
+ }
277
+ }
274
278
275
- _connectionToShared =
276
- WorkerConnection (channel.injectErrorsFrom (shared));
277
- } else {
279
+ Future <void > _startShared () async {
280
+ if (globalContext.has ('SharedWorker' )) {
281
+ final SharedWorker shared;
282
+ try {
283
+ shared = SharedWorker (workerUri.toString ().toJS);
284
+ shared.port.start ();
285
+ } on Object {
278
286
_missingFeatures.add (MissingBrowserFeature .sharedWorkers);
287
+ return ;
279
288
}
280
- });
289
+
290
+ final (endpoint, channel) = await createChannel ();
291
+ ConnectRequest (endpoint: endpoint, requestId: 0 ).sendToPort (shared.port);
292
+
293
+ _connectionToShared = WorkerConnection (channel.injectErrorsFrom (shared));
294
+ } else {
295
+ _missingFeatures.add (MissingBrowserFeature .sharedWorkers);
296
+ }
281
297
}
282
298
283
299
Future <WorkerConnection > _connectToDedicatedInShared () {
0 commit comments