'Turn C{exception} into the kind of exception appropriate to
C{self.mode}.'

def _constructFailure(self, exception):

    if (self.mode is Execution.SYNCHRONOUS):
        raise exception
    elif (self.mode is Execution.SYNCHRONOUS_DEFERRED):
        return fail(Failure(exception))
    else:
        d = self.ready.subscribe()
        d.addCallback((lambda ignored: Failure(exception)))
        return d
