Я не вижу текущей реализации, поэтому сказать не могу, почему оно торомозит - но, скорее всего, ответом будет - не блокировать асинхронный поток. Например, либо переписав текущее решение, так, чтобы оно занимало менее 100 мс за шаг, либо обернуть в executor.