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					
