Node.js core library source code explained in details
Source code is based on version 6.3.1 and commented in details. I've rewritten some part of code for more readability. Those changes are semantic, don't actually affect on functionalities. If there's any error or ambiguity, please let me know.
I recommend starting reading from the EventEmitter and moving to the Stream and it subtypes. After you fully understand EventEmitter and Streams, then move to networking or file system part. For the utility parts, like util or console, you can read whenever you want.