explaining postgres query
A classical case for a lateral join:
SELECT thd.id as _id,
       thd.txt as text,
       thd.delete_password,
       thd.reported,
       thd.created_on,
       thd.bumped_on,
       r.*
FROM (SELECT *
      FROM threads
      WHERE board_id = 1
      ORDER BY created_on DESC
      LIMIT 10) AS thd
   LEFT JOIN LATERAL
      (SELECT * FROM replies
       WHERE thread_id = thd.id
       ORDER BY created_on DESC
       LIMIT 3) AS r ON TRUE;