id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,branch,branch_author,launchpad_bug
3587,deferred for loseConnection,ghazel,,"twisted.internet.abstract.FileDescriptor.loseConnection either completes immediately or finishes asynchronously. Similar to twisted.internet.tcp.Port.loseConnection, it would be nice if a deferred was returned when the operation did not complete immediately. 

Specifically, it would be nice if the deferred fired -after- the event handler for connectionLost, similar to twisted.internet.tcp.Port.loseConnection.
For example, this would be ideal:

{{{
class MyProtocol(Protocol):

    def dataReceived(self, data):
        print 'data'
        df = maybeDeferred(self.transport.loseConnection)
        df.addCallback(lambda : sys.stdout.write('callback\n'))

    def connectionLost(self, reason):
        print 'connectionLost'
}}}

resulting the following, whether the operation was deferred or not:

{{{
data
connectionLost
callback
}}}
",enhancement,closed,normal,,core,duplicate,,,,,
