Hi Cong,
Why are you using async and await? Native coroutines are still very new, they were introduced in Python 3.5 and Tornado 4.3, and as tempting as it may seem to want to use them, why not stick with the tried and tested @gen.coroutine and yield pattern?
Anyway sorry for not answering your question directly, but if you stick with @gen.coroutine, then just use raise gen.Return(...) to get the behaviour you are after.
Hope this helps.
W.