@@ -248,36 +248,52 @@ final class DatabaseClient implements WebSqlite {
248248 }
249249 _startedWorkers = true ;
250250
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 (
253261 workerUri.toString ().toJS,
254262 WorkerOptions (name: 'sqlite3_worker' ),
255263 );
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 {
264265 _missingFeatures.add (MissingBrowserFeature .dedicatedWorkers);
266+ return ;
265267 }
266268
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);
270271
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+ }
274278
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 {
278286 _missingFeatures.add (MissingBrowserFeature .sharedWorkers);
287+ return ;
279288 }
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+ }
281297 }
282298
283299 Future <WorkerConnection > _connectToDedicatedInShared () {
0 commit comments