diff --git a/contracts/contract.js b/contracts/contract.js
index <HASH>..<HASH> 100644
--- a/contracts/contract.js
+++ b/contracts/contract.js
@@ -246,6 +246,25 @@ function Contract(addressOrName, contractInterface, signerOrProvider) {
                     log.removeListener = function() {
                         provider.removeListener(eventInfo.topics, handleEvent);
                     }
+                    function poller(func, key) {
+                        return new Promise(function(resolve, reject) {
+                            function poll() {
+                                provider[func](log[key]).then(function(value) {
+                                    if (value == null) {
+                                        setTimeout(poll, 1000);
+                                        return;
+                                    }
+                                    resolve(value);
+                                }, function(error) {
+                                    reject(error);
+                                });
+                            }
+                            poll();
+                        });
+                    }
+                    log.getBlock = function() { return poller('getBlock', 'blockHash'); }
+                    log.getTransaction = function() { return poller('getTransaction', 'transactionHash'); }
+                    log.getTransactionReceipt = function() { return poller('getTransactionReceipt', 'transactionHash'); }
                     log.eventSignature = eventInfo.signature;
 
                     eventCallback.apply(log, Array.prototype.slice.call(result));
Added get functions to the contract event callbacks.