The first time an IsInitiating=true operation is called through a channel, the session begins. Future calls to IsInitiating=true operations do not start new sessions, they simply become part of the existing session. A session ends after an IsTerminating operation is called (this causes the client to close the channel). No further operations may be called through the channel once the IsTerminating operation returns. These properties give developers control over the order of operation invocation relative to the session lifetime.
Sorry, Here is a link to the source.