function newReadableStream(underlyingSource) {
  assertFunction(
      underlyingSource.start,
      `'start' property must be a function on an underlying source for a ` +
          'lite ReadableStream');
  const verifyObject =
      /** @type {!Object} */ (underlyingSource);
  assert(
      !(verifyObject.pull),
      `'pull' property not allowed on an underlying source for a ` +
          'lite ReadableStream');
  assert(
      !(verifyObject.cancel),
      `'cancel' property not allowed on an underlying source for a ` +
          'lite ReadableStream');
  assert(
      !(verifyObject.type),
      `'type' property not allowed on an underlying source for a ` +
          'lite ReadableStream');
  assert(
      !(verifyObject.autoAllocateChunkSize),
      `'autoAllocateChunkSize' property not allowed on an underlying ` +
          'source for a lite ReadableStream');
  const startAlgorithm = (controller) => underlyingSource.start(controller);
  const stream = new ReadableStream();
  const controller = new ReadableStreamDefaultController(stream);
  stream.readableStreamController = controller;
  controller.start(startAlgorithm);
  return stream;
}
Creates and returns a new ReadableStream.

The underlying source should only have a start() method, and no other
properties.
@param {!liteTypes.ReadableStreamUnderlyingSource<T>} underlyingSource
@return {!ReadableStream<T>}
@suppress {strictMissingProperties}
@template T