@Override
	@Asynchronous
	public void poll(String query, Decoder<E> statusDecoder, Callback<List<E>, Void> callback) {
		long transactionId = new Date().getTime();
		
		Begin begin = new Begin(REG_TRANSACTION_ID, transactionId);
		Poll<E> poll = new Poll<>(twitter, REG_SINCE_ID, query, statusDecoder, transactionId, callback);
		Store store = new Store(REG_TRANSACTION_ID, transactionId);
		Noop noop = new Noop();
		Term term = new Term();
		
		processor.schedule(begin, SECONDARY);
		while (store.get() == transactionId) {
			processor.schedule(poll, SECONDARY);
			processor.schedule(noop, SECONDARY);
			processor.schedule(store, SECONDARY);
			
			try {
				TimeUnit.SECONDS.sleep(10L);
			} catch (InterruptedException e) {
				break;
			}
		}
		processor.schedule(term, SECONDARY);
	}