def getConnection(self, micro_status_entry):
        from twisted.internet import reactor

        m = micro_status_entry

        d = defer.Deferred()

        if m.fingerprint in self._connection_dict:
            d.callback(self._connection_dict[m.fingerprint])
        elif m.fingerprint in self._pending_request_dict:
            self._pending_request_dict[m.fingerprint].append(d)
        else:
            try:
                f = endpoints.connectProtocol(endpoints.SSL4ClientEndpoint(
                    reactor, m.address, m.or_port, TLSClientContextFactory()),
                                              ConnectionBuildTask(self, m))
                f.addErrback(self._initialConnectionFailed, m.fingerprint)
                self._pending_request_dict[m.fingerprint] = [d]
            except Exception as e:
                self._initialConnectionFailed(e, m.fingerprint)

        return d

    # called when the initial connection fails
    # TODO: track these and timeout if we get too many failures
Return a deferred which will fire (if connection attempt is
dataset/ETHPy150Open nskinkel/oppy/oppy/connection/connectionmanager.py/ConnectionManager.getConnection