[fix] first part of improvements towards better error handling

* tasks now contain their own coroutine states so they can be used in qos 1 and 2
* fixed the qos subscribe level should be at least once