Windows 2015 doesn't support millisecond granularity for time, we calculate the time based on estimation. So, its possible transactionDocument.startWallClockTime (calculated by the server) can be behind timeBeforeTransactionStarts (calculated by mozjs) by few milliseconds. Since, on windows 2015 , its not safe to compare the timestamps obtained from 2 different sources mozjs and server, and we already do have a check that verifies that transactionDocument.startWallClockTime < transactionDocument.expiryTime, it is ok to just verify that transactionDocument.startWallClockTime > epoch timestamp (1970-01-01T00:00:00.000).
Note: In Windows 2017, the problem got fixed as it can return high resolution timestamps. And, currently, on evergreen, the master branch is running on windows 2017. But, 4.0 branch is still using windows 2015.