_changes resource for feed=normal, BugzID 1330

diff --git a/src/rexi.erl b/src/rexi.erl
index abcea29..a344af7 100644
--- a/src/rexi.erl
+++ b/src/rexi.erl
@@ -1,7 +1,7 @@
 -module(rexi).
 -export([start/0, stop/0, restart/0]).
 -export([cast/2, cast/3, kill/2]).
--export([reply/1]).
+-export([reply/1, sync_reply/1, sync_reply/2]).
 -export([async_server_call/2, async_server_call/3]).
 
 -define(SERVER, rexi_server).
@@ -61,6 +61,24 @@
     {Caller, Ref} = get(rexi_from),
     erlang:send(Caller, {Ref,Reply}).
 
+%% @equiv sync_reply(Reply, infinity)
+sync_reply(Reply) ->
+    sync_reply(Reply, infinity).
+
+%% @doc convenience function to reply to caller and wait for response.  Message
+%% is of the form {OriginalRef, {self(),reference()}, Reply}, which enables the
+%% original caller to respond back.
+-spec sync_reply(any(), pos_integer() | infinity) -> any().
+sync_reply(Reply, Timeout) ->
+    {Caller, Ref} = get(rexi_from),
+    Tag = make_ref(),
+    erlang:send(Caller, {Ref, {self(),Tag}, Reply}),
+    receive {Tag, Response} ->
+        Response
+    after Timeout ->
+        timeout
+    end.
+
 %% internal functions %%
 
 % send a message as quickly as possible