title: Context manager, multiple function calls and transactions
body: <p>Say I do:</p>
  
  <pre><code>with my_connection:
      o.first_call()
  </code></pre>
  
  <p>where <code>my_connection</code>'s <code>__exit__</code> method calls for a rollback</p>
  
  <p>and <code>o.first_call</code> in its execution calls <code>j.second_call</code>, which itself calls <code>z.third_call</code>. Say that <code>z.third_call</code> successfully inserted a record in to a database, <code>j.second_call</code> also successfully inserts a record, but <code>o.first_call</code> craps out. Will I get a rollback back to the state before I first entered the context of my_connection or will I get rollbacked to a state between <code>o.first_call</code> and <code>j.second_call</code>?</p>
  
  <p>EDIT: To be clear, I'm hoping that the entire thing gets rolled back to before I ever called <code>o.first_call</code></p>
  
  <p>EDIT2: I'm hoping if there was some magic I could do in the <code>__enter__</code>, some kind of context to say, look whatever is called is one big transaction.</p>