The induction sensor runs at 5v input with a voltage divider on the output to 3.3v.
This is definitely a divide-and-conquer problem. Generally, I would have expected the tach to be driving an interrupt.
A resistor voltage divider used for voltage level conversion is a bad design decision, IMO. The added capacitance can screw with the waveform.
Also, were you aware that the ESP8266 user-code programmed under ArduinoIDE must return to the host NON-OS task switcher no longer than 30mS to 50mS (depending upon the article reference.)
So, consider that EVERYTIME you loop() code loops, or anytime delay() or yield() are used, the Arduino code stalls while the RF section does work.
It takes a very careful design to make certain that both sides of the task switcher are happy.
You may find this interesting...
Ray