How to control interrupt using timer in microcontroller
It sounds like your underlying architectural flaw is that you have the receiving of pulses coupled to sending out the flow rate or accumulated water information.  Also, make sure that this water meter either produces clean digital pulses already, or that you debounce the signal in case it is just from a mechanical switch.

In the most general case where you have to debounce the water pulses, don't interrupt on the pulses at all.  Interrupt regularly from a timer.  This needs to be a minimum of 10s of times faster than the pulses at the maximum flow rate.  The interrupt routine will require a minimum number of consecutive high or low states before considering the debounced signal to have changed to the new state.  Once that happens, it increments a counter.  Microcontrollers are much faster than water meters, especially mechanical ones, so interrupting fast enough should be no problem.  Usually a 1 ms interrupt is good enough for this, and then you can use it for other system timing.

Now you can periodically send the counter value or any accumulated delta on ansynchronously.  To avoid contention over the counter with the interrupt routine, the counter the interrupt routine increments can be a single byte.  The foreground code keeps it own copy of the last known value of that byte.  It periodically reads the interrupt routine counter, compares it to the last known value, processes any new ticks the difference represents, then updates the last known value.  As long as the foreground routine does this often enough so that the single byte counter can't wrap between samples, no data will be lost.

The foreground code can then decide when to send information.  This can be based on a timer tick and/or when there is new information to send.