code: function _sendFrameStreamResponse(frame, timeoutMs, responseFrameType) {
          var frameId = xbeeAPI.nextFrameId(),
              sendStream,
              resultStream;
  
          // Set the frame ID and create the callback to check for it
          frame.id = frameId;
  
          // Result is the first frame that matches the frame ID and response type
          resultStream = frameSource
              .pipe(rx.operators.filter(_createFilter(frameId, responseFrameType)),
                    rx.operators.takeUntil(rx.timer(timeoutMs)));
  
          sendStream = rx.Observable.create(function (observer) {
              if (debug) {
                  console.log("Debug frame (out):\n", xbeeAPI.buildFrame(frame));
              }
  
              xbeeAPI.builder.write(frame);
              observer.complete();
          });
  
          // Return our result stream with a timeout
          return rx.merge(sendStream, resultStream).pipe(
              rx.operators.timeoutWith(timeoutMs, rx.throwError(new Error("Timed out after " + timeoutMs + " ms")))
          );
      }
docs: Returns a stream that will (when subscribed to) send the given frame and emit the response frame (or error with a timeout).