What is the output of the following code snippet? | JavaScript Fundamentals

@Yomesh Gupta

Let us consider the following code snippet, in which we are fetching a question based on the questionId.

const User = require("../models/User");
const Question = require("../models/Question");
const { getCurrentSession } = require('../utils');

async function getQuestion(questionId) {
  const isIdInvalid = !questionId || !questionId.trim().length;

  if (isIdInvalid) {
    throw new Error("Bad Request");

  const question = await Question.getQuestionById(questionId);
  // assume we have this utility to find current session
  // computes to an object with proper user data
  const session = getCurrentSession();

  if (session) {    
    // computes to false
    const isAuthorRequest = question.author.id === session.user.id;
    const author = isAuthorRequest ? session.user : await User.getUserById(question.author.id);

  return {
    author: author || null,

const question = await getQuestion('Iahbvfkg5H86a6KL8yBD');


Assume that all the functions getQuestionById, getUserById, getCurrentSession return proper data.

If we run this code snippet then what would be the output?

Option 1
An object with question data
Option 2
Option 3
Option 4