Microtasks: Promise callbacks (.then, .catch), queueMicrotask(), MutationObserver. Macrotasks (tasks): setTimeout, setInterval, setImmediate (Node.js), I/O callbacks.
Lưu ý UI rendering không phải macrotask — nó xảy ra giữa các tasks như một bước riêng của browser. Sau mỗi macrotask, tất cả microtasks trong queue được xử lý hết, sau đó browser có thể render. Thứ tự: sync code → microtasks → render → macrotask → ...