Ok, I did this for both UDP and TCP. What makes me puzzled is that it is not defined by the Streams specification that start() returns a promise. So how does the Streams implementation know how to handle the return value of start()?