     private func process() {
         let type = String(describing: kUTTypeURL)
         guard let item = (extensionContext?.inputItems.flatMap { $0 as? NSExtensionItem })?.first,
-        let provider = (item.attachments?.flatMap { $0 as? NSItemProvider })?.first,
-        provider.hasItemConformingToTypeIdentifier(type) else {
-            return
+            let provider = (item.attachments?.flatMap { $0 as? NSItemProvider }.filter{ $0.hasItemConformingToTypeIdentifier(type) })?.first
+             else {
+                self.close()
+                return
         }
         provider.loadItem(forTypeIdentifier: type, options: nil) { result, error in
             logger.error(error)
             guard let url = result as? URL else {
                 logger.error("result(\(result) is not URL")
+                self.close()
                 return
             }
             self.postToPinboard(url: url)

                switch event {
                case .error(let error):
                    let status = Lib.Progress.error(error)
                    self.statusLabel.text = status
                    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
                        self.close()
                    }

        extensionContext?.completeRequest(returningItems: nil, completionHandler: nil)
    }

    private func show(status: String) {
        statusLabel.text = status
    }
}
