Awesome! That is totally it.
I went back and checked and the 3.6 version of wavfile_sink_impl does not have a stop function. It only closes the file when close() is called or the destructor.
This is a pretty big change from 3.6 to 3.7 and I didn't see it documented anywhere. Is this something I can add to the 3.6 -> 3.7 guide in the wiki? Is there a better place to capture some of the lower level changes?
Are there any good guides that walk through the flows for high level functions? Like what calling lock() triggers in the blocks and the scheduler? It would make it a lot easier to walk through the code.
In order to solve my problem, it looks like I should create a custom version of wavfile_sink that doesn't have stop().