function drain (stream) {
  return withDefaultScheduler(stream.source)
}
"Run" a stream by creating demand and consuming all events
@param {Stream<T>} stream stream to drain
@return {Promise} promise that fulfills after the stream ends without
 an error, or rejects if the stream ends with an error.