The paper studies the systematic top-down design of an asynchronous sender component as part of a software architecture. The receiver pulls messages from the sender by transmitting the number of messages requested. The design refines the communication-oriented input/output behaviour specified by a stream processing function into an implementation by a state transition machine. The development consists of three major transformation steps, viz. the differentiation of the stream processing function, the state introduction using a history abstraction, and the implementation of the abstract state space. The application explicates general methods for the formal design of interactive components in a functional setting.