Are you building an extension for VS? Note that it is unlikely that simply making something async is solving the underlying disposed issue. More likely it is just kicking it down the (time) road so you aren't seeing it right now. But as with all timing issues it is going to reappear at random. The specific error you're getting indicates you are accessing something after it has already been cleaned up which means you have a lifetime management issue somewhere. Without seeing exactly where the error is occurring then it is hard to say what.
In terms of the delay, you have added an async method but it is unclear where it is being called from. Within the async method you are async calling your original method. Honestly this isn't remotely recommended. Making a sync method async by wrapping it in Task.Run doesn't work the way you might think it does and it can introduce deadlocks. Furthermore you're event handler is now being called on a secondary thread and it may not be clear to whoever is managing this code that it actually isn't responding to the UI event directly. Can you please post the full set of code that is calling your async method and what, if anything, is using the event handler?
It would also be useful to understand how you created the extension. Are you using the newer SDK with the async-enabled package stuff or are you updating an older extension? Have you run the analyzers that ship with the newer SDK to help detect issues like thread management? They are designed to help solve these kinds of issues.
Also ensure that you're profiling your code. Is the delay happening getting to your handler or within your handler. If it is before your handler then it is likely something running before your extension gets called. Are you using the isolated environment when testing your extension such that other extensions won't get in the way?