Skip to content

Latest commit

 

History

History
39 lines (32 loc) · 1.05 KB

README.md

File metadata and controls

39 lines (32 loc) · 1.05 KB

AsyncDebugger

const {createServer} = require('http');

const getAllUsers = async () => {
  await new Promise((resolve) => setTimeout(resolve, 500));
  return [{id: 0, name: 'Alpha'}, {id: 1, name: 'Bravo'}, {id: 2, name: 'Charlie'}];
};
const getUserById = async (id) => {
  const allUsers = await getAllUsers();
  return allUsers.find((user) => user.id === id);
};

const server = createServer(async (request, response) => {
  try {
    const userId = +request.url.split('/').pop();
    const {name} = await getUserById(userId);

    await 'debugger'; // <-- it will await until REPL is closed.

    response.write(name);
  } catch (error) {
    response.statusCode = 500;
    response.write(String(error));
  } finally {
    response.end();
  }
});
server.listen(3000, () => console.log('Listening on', server.address()));
node --require async-debugger/register --experimental-repl-await server.js
# Or with `ts-node`:
# NODE_OPTIONS="--experimental-repl-await" ts-node --require async-debugger/register server.ts

alt text