We do not allow you to implicitly create a collection in a transaction. This check is performed using inMultiDocumentTransaction(). However, if the transaction has been killed since the operation started running, inMultiDocumentTransaction() will return false, and we will allow you to implicitly create a collection. On the 4.0 branch, we should fix this by instead checking inActiveOrKilledMultiDocumentTransaction(). On master, this will be fixed by
SERVER-37244, which ensures that the transaction state cannot change while the session is checked out.