Use web workers, working but unfinished.