Looks like it is safe to call destroy even if it has been destroyed already. The only thing calling destroy does if the window already unloaded is it drops references to event listeners added to the worker