JSFiddle - React, Tailwind, and code Playground

JavaScript

function getUserDashboardData(db, userId) {
  // blocking calls
  var user = getUserFromDatabase(db, userId);
  var friends = getUserFriends(db, user);
  var discussions = getUserDiscussions(db, user);
  var friendRecommendations = getUserFriendRecommendations(db, 
                                                           user,
                                                           friends);
  var interestingDiscussions = getUserInterestingDiscussions(db,
                                                             friends);
    
  return {
      user: user,
      friends: friends,
      discussions: discussions,
      friendRecommendations: friendRecommendations,
      interestingDiscussions: interestingDiscussions
  };
}

function getUserFromDatabase(db, userId) {
  return db.read('users', 'id = ?', userId);


function getUserFriends(db, user) {
  return db.read('friends', 'user_id = ?', user.id);
}

function getUserDiscussions(db, user) {
  return db.read('discussions', 'user_id = ?', user.id);
}

function getUserFriendRecommendations(db, user, friends) {
  var friendIds = _.pluck(friends, 'id');
    
  return db.read('friend_recommendations', 'user_id = ? and friend_id in ?', 
                 user.id,
                 friendIds);
}

function getUserInterestingDiscussions(db, discussions) {
  var discussionIds = _.pluck(discussions, 'id');
    
  return db.read('interesting_discussions', 'id in ?', discussionIds);
}