Set timeout or cancel

Using task based async, won't block the thread.