trying to fix a task bug
- refactored all promises and streams to use I/O instead of R/T as type
parameters, much clearer
- fixed some bugs