первая запись валидна, throw прокинет все что угодно, хоть обьект, хоть строку, хоть самого черта и того прокинет) но все же кидать «ошибку» стоит - работать со встроенным инструментом, а не это вот все, new Error('здесь человекочитаемое описание'), другое дело что вам статус отдельно нужен (не понимаю зачем) через new Error, только message, в котором по идее и должны этот статус указывать и описание к нему