Tornado with_timeout correct usage

I've got a web-server that runs some shell command. The command usually takes a couple of seconds, but in some occasions it takes more and in that case the client (it is not a web-browser or curl) disconnects.
I have no possibility to fix the client, so I thought about fixing the server. It is based on tornado framework. I rewrote it using tornado.gen.with_timeout function, but for some reason it doesn't work as I expect. I set timeout to 5 seconds, so when quering the server I expect to get either "finished in X seconds" (where X < 5)
or "already took more than 5 seconds... still running". And in both cases I expect to get response in less than 5 seconds.
Here is the code:

Although run_slow_command is decorated with coroutine it's still blocking, so Tornado is blocked and cannot run any code, including a timer, until the os.system call completes. You should defer the call to a thread: