def read(self, document, iface, *args, **kwargs):
        """
        Returns a Deferred that fire the read object.
        """
        try:
            document = IReadableDocument(document)
            mime_type = document.mime_type
            reader = self.lookup_reader(mime_type, iface)
            if not reader:
                msg = ("No adapter found to read object %s from %s document"
                       % (iface.__class__.__name__, mime_type))
                raise NoReaderFoundError(msg)
            return reader.read(document, *args, **kwargs)
        except:
            return defer.fail(Failure())