Promise.race() based select like pipeTo implementation

Also adds more test cases for pipeTo
Just fit to 120 col is the important part; no need for \r or \n in the code. Adding `\` is fine, but is more typing and subjectively I like using backticks more...