function testTransaction_Read() {
  var executionOrder = [];

  // Creating two tasks refering to the same scope.
  var queryTask1 = new lf.testing.MockTask(
      lf.TransactionType.READ_WRITE,
      createScope(),
      function() { executionOrder.push('query1'); },
      lf.proc.TaskPriority.USER_QUERY_TASK);
  var queryTask2 = new lf.testing.MockTask(
      lf.TransactionType.READ_ONLY,
      createScope(),
      function() { executionOrder.push('query2'); },
      lf.proc.TaskPriority.USER_QUERY_TASK);

  var promises = [queryTask1, queryTask2].map(
      function(queryTask) {
        return runner.scheduleTask(queryTask);
      });

  return goog.Promise.all(promises).then(function() {
    // Ensuring that the READ_ONLY task was executed after the READ_WRITE
    // task finished.
    assertArrayEquals(['query1', 'query2'], executionOrder);
  });
}
Tests that SELECT queries are executed after overlapping write transaction
finishes.
@return {!IThenable}