JSFiddle - React, Tailwind, and code Playground

JavaScript

function getUserDashboardData(db, userId, callback) {
  // non-blocking calls
  getUserFromDatabase(db, userId, function(err, user) {
    if (err) return callback(err, undefined);
        
    getUserFriends(db, user, function(err, friends) {
      if (err) return callback(err, undefined);
          
      getUserDiscussions(db, user, function(err, discussions) {
        if (err) return callback(err, undefined);
                
          getUserFriendRecommendations(db,
                                       user, 
                                       friends, 
                                       function(err, friendRecommendations) {
            if (err) return callback(err, undefined);
                
             getUserInterestingDiscussions(db,
                                           discussions, 
                                           function(err, interestingDiscussions) {
               if (err) return callback(err, undefined);
                        
                var data = {
                  user: user,
                  friends: friends,
                  discussions: discussions,
                  friendRecommendations: friendRecommendations,
                  interestingDiscussions: interestingDiscussions
                };
                            
                callback(null, data);
              });
          });
        });
     });
  });
}

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

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

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

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

function...