Event driven Asynchronous (i.e. non-blocking) I/O Single-threaded (But you can run your own threads if you want to) This means your code should not block the main thread! This is actually really convenient