The first decision we had to make was whether to use nyc or V8’s native code coverage. We chose nyc for 2 reasons. First, we’re more familiar with nyc and istanbul.
Second, and more importantly, istanbul is more “hackable”, because code can access the current state of code coverage in the `global.__coverage__` variable. Your code can actually inspect the current coverage state. And, more importantly, you can transfer code coverage state between processes or between sandboxes. V8 native coverage doesn’t support that.