It certainly could be.  I chose this silent approach because it allows me to mindlessly always begin a transaction in function B even though function A might have already opened one.  Certainly I could check connection.inTransaction everywhere in my data-access layer though.