Using I2C (which i recommend over serial), you may not use a NodeMCU ESP8266 as a slave. It can only function as master. An Arduino, on the other hand, may be either. Therefore, the Arduino will always be passive and the NodeMCU will be the master.
What you can do, is implement a sempahoresemaphore (as described by Majenko here), where the Arduino signals that it has something to "say" to the master, causing the master to request from the Arduino. It could, under these circumstances, be labeled an "obliging master" (neologism).
NEVER print to serial from inside requestEvent or receiveEvent.