 
 		try send(resourceRequest, to: peers)
 
-		let receipt = ResourceRequestReceipt(request: resourceRequest, peers: peers)
-		let transferQueue = DispatchQueue(label: "com.junpluse.Tuka.Session.sendResource.transferQueue")
-		let disposable = CompositeDisposable()
+		let transferQueue = DispatchQueue(label: "com.junpluse.Tuka.Session.ResourceTransferQueue")
+		let transferDisposable = CompositeDisposable()
 
 		peers.forEach { peer in
 			let item = DispatchWorkItem { [mcSession] in

	public let request: Request
	public let peers: [Peer]

	let disposable = CompositeDisposable()

	init(request: Request, peers: [Peer]) {
		self.request = request
		self.peers = peers
	}

	public var isDisposed: Bool {
		return disposable.isDisposed
	}

	public func dispose() {
		disposable.dispose()
	}
}


					}
					semaphore.signal()
				}
				transferDisposable += { progress?.cancel() }
				eventObserver.observe(.transferStarted(resourceRequest, peer, progress))
				semaphore.wait()
			}
			transferDisposable += { item.cancel() }
			transferQueue.async(execute: item)
		}

		return ResourceRequestReceipt(request: resourceRequest, peers: peers, transferDisposable: transferDisposable)
	}

	public func submitResourceRequest(withName resourceName: String, at localURL: URL, to peers: [MCPeerID], eventHandler: @escaping (ResourceEvent<ResourceRequest>) -> Void = { _ in }) throws -> ResourceRequestReceipt<ResourceRequest> {
