Deferreds don't do what you think they do.
They don't do anything to make your code non-blocking.
They only adhere to a contract that something will eventually be returned.
The most common use of deferred's to make your code non-blocking is to use .deferToThread()
or some other mechanism to make the long running code non-blocking, like spawning a process.