title: ReBus equivalent to NServiceBus Saga ReplyToOriginator
body: <p>I am working with Sagas in ReBus and from my experience with NServiceBus you could reply to the original creator of the Saga to give updates, something like this:</p>
  
  <pre><code> Saga&lt;&gt;.ReplyToOriginator
  </code></pre>
  
  <p>I do not see an equivalent way of doing this with ReBus. Is there a way to do this, and if not what is a good pattern (other than the originator polling) I can use that will achieve the same thing? An example is trying to create a customer and the client wanting to know when it is created before trying to change it's address.</p>
  
  <p>Here is a trivial example of the Customer scenario I quickly put together:</p>
  
  <pre><code>public class CreateCustomerSaga : Saga&lt;CreateCustomerData&gt;,
      IAmInitiatedBy&lt;CreateCustomerCommand&gt;,
      IHandleMessages&lt;CustomerUniqunessCheckResult&gt;
  {
      private readonly IBus _bus;
      private readonly ICustomerResourceAccess _customerResourceAccess;
  
      public CreateCustomerSaga(IBus bus, ICustomerResourceAccess customerResourceAccess)
      {
          _bus = bus;
          _customerResourceAccess = customerResourceAccess;
      }
  
      public override void ConfigureHowToFindSaga()
      {
          Incoming&lt;CustomerUniqunessCheckResult&gt;(x =&gt; x.IsCustomerUnique).CorrelatesWith(y =&gt; y.CustomerId);
      }
  
      public void Handle(CreateCustomerCommand message)
      {
          Data.CustomerId = message.CustomerId;
          Data.CustomerName = message.CustomerName;
  
          _bus.Send(new CheckCustomerUniquenessCommand(message.CustomerId));
      }
  
      public void Handle(CustomerUniqunessCheckResult message)
      {
          if (message.IsCustomerUnique)
          {
              _customerResourceAccess.CreateCustomer(Data.CustomerId, Data.CustomerName);
  
              // This is what seems to be missing from ReBus to reply to the original sender
              _bus.?(new CustomerCreatedEvent(Data.CustomerId));
          }
          else
          {
              // This is what seems to be missing from ReBus to reply to the original sender
              _bus.?(new CustomerAlreadExistsEvent(Data.CustomerId));
          }
      }
  }
  
  public class CustomerCreatedEvent
  {
      public Guid CustomerId { get; set; }
  
      public CustomerCreatedEvent(Guid customerId)
      {
          CustomerId = customerId;
      }
  }
  
  public class CustomerAlreadExistsEvent
  {
      public Guid CustomerId { get; set; }
  
      public CustomerAlreadExistsEvent(Guid customerId)
      {
          CustomerId = customerId;
      }
  }
  
  public class CustomerUniqunessCheckResult
  {
      public bool IsCustomerUnique { get; set; }
  }
  
  public class CheckCustomerUniquenessCommand
  {
      public CheckCustomerUniquenessCommand(Guid customerId)
      { }
  }
  
  public interface ICustomerResourceAccess
  {
      void CreateCustomer(Guid customerId, string customerName);
  }
  
  public class CreateCustomerCommand
  {
      public Guid CustomerId { get; set; }
  
      public string CustomerName { get; set; }
  }
  
  public class CreateCustomerData : ISagaData
  {
      public CreateCustomerData()
      {
          Id = Guid.NewGuid();
      }
  
      public Guid CustomerId { get; set; }
  
      public string CustomerName { get; set; }
  
      public Guid Id { get; set; }
  
      public int Revision { get; set; }
  }
  </code></pre>